Add names to table variables from a large cell

2 vues (au cours des 30 derniers jours)
NA
NA le 2 Juin 2021
Commenté : Stephen23 le 9 Juin 2021
I have a 1x72 cell with name like 'Var_name'
Var_name = {[1,3,4],[4,7,8],[1,2],...,[4,6,7],[5,6,8]}; ---> 1x72 cell
and have a matrix A
A = [4 1 0 0...; 5 0 1 1...; 6 1 0 1...; 7 0 1 0...; ...]; ---> 10x72 double
I would like to have a Table that has variable names based on the above cell with Var_name, like this...
index [1,3,4] [4,7,8] [1,2] [4,6,7] [5,6,8]
4 1 0 0 ...
5 0 1 1 ...
6 1 0 1 ...
7 0 1 0 ...
. . . .
I used this code, but it does not work
Var_name_string = cellfun(@(a)string(a),Var_name,'uni',0);
T = array2table(A.','variablenames',{'index' Var_name_string});
instead of ---> T = array2table(A,'VariableNames',{'index' '{1,3,4}' '{4,7,8}' '{1,2}' ....'{4,6,7}' '[5,6,8]'});

Réponse acceptée

Stephen23
Stephen23 le 2 Juin 2021
Modifié(e) : Stephen23 le 2 Juin 2021
% Fake data:
V = {[1,3,4],[4,7,8],[1,2]};
A = randi(9,5,4);
% Create table:
F = @(n)sprintf("{%s}",join(string(n),","));
T = array2table(A,'VariableNames',["Index",cellfun(F,V)])
T = 5×4 table
Index {1,3,4} {4,7,8} {1,2} _____ _______ _______ _____ 6 5 5 1 4 4 2 7 3 7 6 7 3 2 2 1 9 6 3 1
  4 commentaires
NA
NA le 9 Juin 2021
I have this Var_name
Var_name = {[1,3,4],[4,7,8],[1,2],...,[4,6,8,9,11,18,19,20,21,22,23,24,25,30,31,32,34,35,36,40,41,42,56]};
So, I got this error
Error using array2table (line 81)
'{4,6,8,9,11,18,19,20,21,22,23,24,25,30,31,32,34,35,36,40,41,42,56}' is
longer than the maximum allowed length for a table variable name.
Is there any way to fix it?
Stephen23
Stephen23 le 9 Juin 2021
"Is there any way to fix it?"
Use a shorter name.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by