考虑在matlab中使用此表:
t = table([1; 0; 3; 1], [0; 1; 0; 4], 'VariableNames', {'A', 'B'});
A B
_ _
1 0
0 1
3 0
1 4
我想附加一个新列C
,其中包含基于条件的特定值。目前我使用这个循环:
for i=1:height(t)
if t(i, 'A').Variables == 1
t.C(i, 1) = 4;
elseif t(i, 'A').Variables == 3
t.C(i, 1) = 5;
end
end
然而,这是一个时间comsuming操作是一个表大小超过100k行的情况。
对此最好的解决方案是什么?
答案 0 :(得分:2)
您可以使用以下内容:
[t{t.A==1, 'C'}] = 4;
[t{t.A==3, 'C'}] = 5;
这使用了
的事实{}
索引,就像在单元格数组中一样; 或者,如@SardarUsama所述,您可以使用更简单的
t.C(t.A==1)=4;
t.C(t.A==3)=5;
这使用点表示法来索引列。结果是一个数字列向量,可以直接为其指定标量。