Remove specific entry in a cell array
199 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
ZigzS
el 31 de En. de 2018
Comentada: Jan
el 11 de Oct. de 2022
I want to remove an entry in a cell array if it is equal to something specifically. Explained in this example:
animals={'cat', 'dog', 'mouse', 'horse'};
"animals" is being redefined in a loop, and if it happens to be redefined with 'dog' as an entry, I want to remove it. So I want
animals={'cat', 'mouse', 'horse'};
I don't want to replace 'dog' with a blank (''), I want to remove that entry entirely and keep the array tight (i.e. reduce the dimensions from 4x1 to 3x1 in this case).
Thanks
0 comentarios
Respuesta aceptada
James Tursa
el 31 de En. de 2018
animals(ismember(animals,'dog')) = [];
2 comentarios
Nischal Amin
el 10 de Oct. de 2022
This does not work for me.
X = ('Cat', 'Dog', 'Tiger');
X = X(ismember(X,'Tiger')) == []
X should be 'Cat', 'Dog', Empty cell
Basically, I don't want the X index to change. I just want to remove Tiger. So, when I do unique(X)...it displays only Cat and Dog.
Jan
el 11 de Oct. de 2022
X = ('Cat', 'Dog', 'Tiger') is no valid Matlab syntax. For a cell array you need curly braces, not parentheses.
X(ismember(X,'Tiger')) == [] compares the cell {'Tiger'} with the empty matrix. It does not set anything to the empty cell.
X = {'Cat', 'Dog', 'Tiger'};
X(ismember(X,'Tiger')) = {''}
% Or faster:
X = {'Cat', 'Dog', 'Tiger'};
X(strcmp(X, 'Tiger')) = {''}
Más respuestas (2)
Akira Agata
el 31 de En. de 2018
Another way to do it:
idx = strcmp(animals,'dog');
animals(idx) = [];
1 comentario
Jan
el 31 de En. de 2018
animals = {'cat', 'dog', 'mouse', 'horse'};
animals = setdiff(animals, {'dog'})
This would allow to remove multiple elements at once.
7 comentarios
RITESH KUMAR
el 18 de Sept. de 2019
can we write element number at place of dog. it is at 2nd place. can i write 2.
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!