For each non NaN value in the 2rd column, remove the entire row of Cell

raw= [UPS CALL;WMB NaN;LNG NaN; XLE PUT ;DIS CALL]
('raw' is a cell in my case)
Here is what I have so far but it does not work:
[dummy,dummy,raw] = xlsread(fullfile(source_dir,source_files(i).name));
Equity_only = cellfun(@isfinite,raw(:,2),'un',0)
raw=cell2table(raw)
raw(Equity_only,:) = []
raw = table2cell(raw);
Help please!

답변 (3개)

Despite raw being a cell, are there only numbers in the second column? If so:
tf = isnan(vertcat(raw{:,2})) ;
raw2 = raw(tf,:)
If not
tf = cellfun(@(E) numel(E)==1 && isnumeric(E) && isnan(E), raw(:,2))
raw2 = raw(tf,:)
(I am not sure about the "not" in your title. Perhaps you need ~tf ??)
Florent
Florent 2014년 7월 10일
편집: Star Strider 2014년 7월 10일
Thanks a lot, that really help!
tf = cellfun(@(E) numel(E)==1 && isnumeric(E) && isnan(E), raw(:,2))
raw2 = raw(tf,:)
Was what I needed!
Now, how do I do if I only want to keep rows with certain strings, for example 'CALL', as well as the NaN value (but remove rows with all other strings)?
tf = cellfun(@(E) (numel(E)==1 && isnumeric(E) && isnan(E))...
||(all(isletter(E))&&strcmp('CALL',E)), raw(:,2));
raw2 = raw(tf,:);

카테고리

도움말 센터File Exchange에서 Numeric Types에 대해 자세히 알아보기

질문:

2014년 7월 9일

답변:

2014년 7월 10일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by