2017-01-11 2 views
0

ループ/NaNを返すストラテジーを使用して、文字列 'NaN'をテーブル内のNaNに置き換えたい場合は、ここに私のコード:forループを使用してテーブル内の '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; 

どのように私は、 "表" 形式のため、この理論的根拠を使用することができますか?

答えて

0

可能な方法の1つは、以下のようにテーブルの列に対して論理インデックスを使用することです。

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 
+0

ありがとう、Navan。私はこれを試しましたが、_loop_をすべての281列にわたって実行しようとしています – John

+0

私は列をループする答えを更新しました。ループのタイプに応じていくつかの追加チェックが必要な場合があります。 – Navan

+0

大丈夫、ありがとうナバン! – John

関連する問題