How to modify table elements without using a for loop?

3 visualizaciones (últimos 30 días)
Elissa
Elissa el 4 de Nov. de 2018
Comentada: Peter Perkins el 6 de Nov. de 2018
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

Respuesta aceptada

Stephen23
Stephen23 el 4 de Nov. de 2018
Editada: Stephen23 el 4 de Nov. de 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 comentarios
Elissa
Elissa el 4 de Nov. de 2018
Perfect, thanks.
Peter Perkins
Peter Perkins el 6 de Nov. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Tables en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by