Loop through multiple columns in table using if condition

20 ビュー (過去 30 日間)
YaaW 2023 年 1 月 6 日
コメント済み: YaaW 2023 年 1 月 6 日
I have a large table, let's call it X, with many rows and columns. I want to loop through 10 columns (named X.A, X.B, X.C, etc.), and when all of the 10 columns for a specific row have the value NaN, I want a 0 in the column X.result, and when at least one or more of the columns has a value (an integer), I want it to return a 1 in the column X.result.
I tried to create this with looping through 1 column first and add more after, but I can't seem to manage it to work:
for i = 1:length(X.result)
if (~isnan((X.A)))
X.result(i) = 1;
I think I might be doing something wrong in defining variables but I can't seem to figure it out. The first line after the if statement ( if (~isnan((X.A))) ) works, but no 0 or 1 is assigned to the X.result column. Can anybody help me with this? Thanks!


VBBV 2023 年 1 月 6 日
X.A = [randi([0 10],1,7) NaN]
X = struct with fields:
A: [2 10 7 7 3 4 8 NaN]
X.B = repmat(NaN,1,8);
for i = 1:length(X.A)
if (isnan(X.A(i)) & isnan(X.B(i)))
X.result(i) = 0;
elseif ~isnan(X.A(i)) | ~isnan(X.B(i))
X.result(i) = 1;
[X.A.', X.B.', X.result.']
ans = 8×3
2 NaN 1 10 NaN 1 7 NaN 1 7 NaN 1 3 NaN 1 4 NaN 1 8 NaN 1 NaN NaN 0
  2 件のコメント
YaaW 2023 年 1 月 6 日
Thanks! Keep forgetting to put the (i) behind the variable :)


その他の回答 (0 件)


Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by