在Matlab中动态更新DataTable的标题

时间:2018-12-05 14:08:00

标签: arrays matlab datatable

在尺寸为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上的唯一键。反馈将不胜感激。

1 个答案:

答案 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;