How to modify table elements without using a for loop?

E.g.
% t is a table
for (yy = 1:size(t,1))
if strcmp('cat',t.animal(yy))
t.value(yy) = t.value(yy)*-1;
end
end

1 件のコメント

madhan ravi
madhan ravi 2018 年 11 月 4 日
give a short example and upload your table

サインインしてコメントする。

 採用された回答

Stephen23
Stephen23 2018 年 11 月 4 日
編集済み: Stephen23 2018 年 11 月 4 日

1 投票

Your original idea of using strcmp was perfect, there is no need to complicate things with strings:
value = [1;2;3;4]
animal = {'cat';'dog';'cat';'dog'}
t = table(value,animal)
idx = strcmp(t.animal,'cat')
t.value(idx) = -t.value(idx)

2 件のコメント

Elissa
Elissa 2018 年 11 月 4 日
Perfect, thanks.
Peter Perkins
Peter Perkins 2018 年 11 月 6 日
One addition to Stephen's sol'n: if animal is representative of what your actual data look like, you should consider using a categorical variable. You would then change one line
idx = (t.animal == 'cat');
but also you might find working with that variable elsewhere much simpler.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeTables についてさらに検索

質問済み:

2018 年 11 月 4 日

コメント済み:

2018 年 11 月 6 日

Community Treasure Hunt

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

Start Hunting!

Translated by