在尺寸为Table
的矩阵T = array2table(P)
上执行P
之后,有没有一种有效的方法来动态更新e.g.(1x120)
的标头,而不是手动求助于{{1 }},因为我属于T.Properties.VariableNames{i} = xxx
?
由于[2;120]
在Matlab
上默认分配了{Var1,....Var120}
,因此想法是遍历T
的每个列标题,然后分配一个新名称T
其中T代表= T_Var2,....T_Var120}
一旦在table name
上执行了唯一列标题,则T
可以与其他表一起使用(使用预期的解决方案),因为它们将共享outerjoin
上的唯一键。反馈将不胜感激。
答案 0 :(得分:1)
调用array2table
时可以定义标题。
在这里,我首先创建所有名称(使用所需的表名代替'Table_Var'
,然后在创建表时进行分配。
% Create unique headers, 'Table_Var1', 'Table_Var2', 'Table_Var3', ...
headers = arrayfun( @(x) sprintf('Table_Var%d',x), 1:size(P,2), 'uni', 0 );
% Assign headers when creating the table
T = array2table( P, 'VariableNames', headers );
如果您希望第1列始终具有相同的名称,例如说'Col1'
,而只有2:end
列使用表名,则可以使用:
headers = ['Col1', arrayfun( @(x) sprintf('Table_Var%d',x), 2:size(P,2), 'uni', 0 ) ]
一旦有了标头的单元格数组,您也可以一次性重命名表变量名(如果在array2table
阶段执行此操作,则无需这样做)
T.Properties.VariableNames = headers;