How to modify table elements without using a for loop?

1 visualizzazione (ultimi 30 giorni)
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

Risposta accettata

Stephen23
Stephen23 il 4 Nov 2018
Modificato: Stephen23 il 4 Nov 2018
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 Commenti
Peter Perkins
Peter Perkins il 6 Nov 2018
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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Tables in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by