このテーブルを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
ただし、これは時間消費操作であり、テーブルサイズが100k行を超える場合です。
これに対する最善の解決策は何でしょうか?
以下を使用できます。
[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;
これは、ドット表記を使用して列にインデックスを付けます。結果は、スカラーを直接割り当てることができる数値の列ベクトルです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加