如何使用for循环覆盖表中的“NaN”字符串

时间:2017-01-11 17:33:36

标签: string matlab loops nan

我想使用循环 /或任何其他返回NaN的策略,在表格中用NaN替换字符串'NaN',其他所有内容都保持不变。这是我的代码:

for k = 1:height(Z_24TimeSteps)
  if isnan(Z_24TimeSteps{k})
    Z_24TimeSteps{k} = nan;
  end
end

表: enter image description here

我尝试的另一种策略:

Z_24TimeSteps(cellfun(@isnan,Z_24TimeSteps))=nan;

如何将此基本原理用于“表格”格式?

1 个答案:

答案 0 :(得分:0)

一种可能的方法是对表列使用逻辑索引,如下所示。

Z_24TimeSteps.x1COVGY(strcmp(Z_24TimeSteps.x1COVGY,'NaN')) = {nan}

对于多列,您可以按如下方式循环列。

colNames = Z_24TimeSteps.Properties.VariableNames;
for k = 1:numel(colNames)
    if iscell(Z_24TimeSteps.(colNames{k}))
        Z_24TimeSteps.(colNames{k})(strcmp(Z_24TimeSteps.(colNames{k}),'NaN')) = {nan};
    else
        Z_24TimeSteps.(colNames{k})(strcmp(Z_24TimeSteps.(colNames{k}),'NaN')) = nan;
    end
end