Info
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Erase all the rows that contain NaN
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear all
I have
[N,T,R]=xlsread(name)
I want to erase all the rows in R that contain only NaN
thanks
[EDITED, copied from comments]:
So to input cell matrix is
'TOTPAIN' [NaN] [6.9150]
[1x40 char] [NaN] [6.90]
[ NaN] [NaN] [NaN]
[ NaN] [NaN] [NaN]
'MAS' [NaN] [NaN]
'MAR PACK G' [NaN] [6.7]
'MA 3 PACK 58G' [NaN] [6.7]
0 commentaires
Réponses (3)
Miro
le 18 Juil 2012
Modifié(e) : Miro
le 18 Juil 2012
hi,
try this
[n,~]=size(R)
R_new = [];
for i = 1 : n
R_tmp = R(i,:);
if length(find(isnan(R_tmp)) ~= length(R_tmp)
R_new = [R_new;R_tmp]
end
end
7 commentaires
Miro
le 18 Juil 2012
Modifié(e) : Miro
le 18 Juil 2012
sorry for the missunderstanding. the following should work Your example looks like you want to delete the Coloumn, not the Row... For deleting the column try the following:
function Rout = deleteNAN(Rin)
[~,n]=size(R)
R_new = {};
for i = 1 : n
R_tmp = cell2mat(R(:,i));
if length(find(isnan(R_tmp))) ~= length(R_tmp)
R_new = [R_new R_tmp]
end
end
Rout = R_new
Store this in a .m file in your current folder and run it.
Jan
le 18 Juil 2012
Perhaps something like this:
index = cellfun(@isequalwithequalnans, R, {NaN});
R(all(index, 2)) = [];
But due to a vague defined input, this contains too much guessing to be reliable. Sorry.
1 commentaire
Andrei Bobrov
le 18 Juil 2012
Rout = R(~all(cellfun(@(x)all(isnan(x)),R),2),:)
4 commentaires
Jan
le 18 Juil 2012
@Sabbas: Do you get a "warning" or an "error"? In both cases posting the message would be a good idea.
Cette question est clôturée.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!