Info
この質問は閉じられています。 編集または回答するには再度開いてください。
Erase all the rows that contain NaN
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (3 件)
Miro
2012 年 7 月 18 日
編集済み: Miro
2012 年 7 月 18 日
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 件のコメント
Miro
2012 年 7 月 18 日
編集済み: Miro
2012 年 7 月 18 日
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
2012 年 7 月 18 日
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 件のコメント
Andrei Bobrov
2012 年 7 月 18 日
Rout = R(~all(cellfun(@(x)all(isnan(x)),R),2),:)
4 件のコメント
Jan
2012 年 7 月 18 日
@Sabbas: Do you get a "warning" or an "error"? In both cases posting the message would be a good idea.
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!