Delete all rows in cell array based on value
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jan Kielmann
el 22 de Dic. de 2019
Comentada: J. Alex Lee
el 24 de Dic. de 2019
I have a cell array A that contains multiple tables in the first column and add a vector (B) in the second column that shall indicate if a row is used or can be deleted.
A = {table(rand(3,2)); table(rand(3,2)); table(rand(3,2))};
B = {1; 0; 1};
C = horzcat(A,B);
I now have issues to delete all rows in cell array C that are indicated with a 0.
I have tried some proposed solutions for this kind of problem (deleting rows based on value) but could not find a working one for the specific problem.
Has someone an idea how to handle this issue?
Best regards!
0 comentarios
Respuesta aceptada
J. Alex Lee
el 22 de Dic. de 2019
Do you need the cell array C? Must B be a cell array? If not...
A = {table(rand(3,2)); table(rand(3,2)); table(rand(3,2))};
% make B a logical array
% B = {1; 0; 1};
B = ([1;0;1]);
% don't need C
% C = horzcat(A,B);
A(~B) = [];
If for whatever reason you need an inline solution once you have the cell array C
A = {table(rand(3,2)); table(rand(3,2)); table(rand(3,2))};
B = {1; 0; 1};
C = horzcat(A,B);
C(~C[{:,2}],:)=[]
9 comentarios
Veronica Taurino
el 22 de Dic. de 2019
Thank you Alex, I was going crazy moving those brackets around ahah neat solution, thank you, I am going to save it for later. Have a nice day
J. Alex Lee
el 24 de Dic. de 2019
through browsing more on answers, I found this:
Actual documentation about what I was doing with [C{:,2}]
Más respuestas (1)
Veronica Taurino
el 22 de Dic. de 2019
A = {table(rand(3,2)); table(rand(3,2)); table(rand(3,2))};
B = {1; 0; 1};
C = horzcat(A,B);
D={};
ii=0;
jj=0;
for ii=1: size(C,1)
if C{ii,2}==1
jj=jj+1;
D{jj}=C{ii,1};
D=D';
end
end
Something like that?
0 comentarios
Ver también
Categorías
Más información sobre Function Creation 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!