If isnan then set to text
4 ビュー (過去 30 日間)
古いコメントを表示
for i=1:length(Table1.Columnname)
if isnan(Table1.Columnname(i))
Table1.Columnname(i) = 'NO';
end
end
I have the above code but it does not work. I think it has to do with how I have defined Table1.Columnname(i) = 'NO';
Please can someone tell me how to code this properly for my isnan i.e. to set that cell in the table to "NO"?
1 件のコメント
dpb
2014 年 4 月 10 日
Format your code so it's legible, please...
But, the problem is more than likely that since you have a table, there's no NaN but a string 'NaN' is my guess. Have you tested w/ debugger or w/ debugging output what
isnan(Table1.Columnname(i))
returns for the cell in question?
採用された回答
Walter Roberson
2014 年 4 月 10 日
What datatype is Table1.Columnname ? If it is a char array (string) then you cannot store two elements 'N' and 'O' in one location. If it is a cell array then you need to work with its contents rather than with the cell, such as Table1.Columnname{i} = 'NO' . And as Duane points out, you need to know whether the cell would hold NaN (a numeric value) or 'NaN' (a string)
6 件のコメント
Image Analyst
2014 年 4 月 14 日
I'm confused. Do you really have a table? How did you import? Did you do
T = readtable(yourFileName);
? Let's use the example in the help, and replace one of the items in the cell with nan and see what happens:
T = table(['M';'F';'M'],[45;32;34],...
{'NY';nan;'MA'},logical([1;0;0]),...
'VariableNames',{'Gender' 'Age' 'State' 'Vote'})
class('T.State') % Reports char.
whos T.State % Strangely silent - reports nothing.
YourCellArray = T.State % Extract column 3 into a cell array.
% The following line bombs.
YourCellArray(cellfun(@isnan, YourCellArray)) = {'NO'};
Can anyone explain why (1) whos is silent, and (2) why Walter's code bombs?
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!