Clear Filters
Clear Filters

Add names to table variables from a large cell

2 views (last 30 days)
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]'});

Accepted Answer

Stephen23
Stephen23 on 2 Jun 2021
Edited: Stephen23 on 2 Jun 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 Comments
NA
NA on 9 Jun 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 on 9 Jun 2021
"Is there any way to fix it?"
Use a shorter name.

Sign in to comment.

More Answers (0)

Categories

Find more on Tables in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!