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!