function for looking for strings in table
이전 댓글 표시
randomnumbers = 5 + (10-5)*rand(71,1);
randomnumbers2 = 10 + (20-10)*rand(71,1);
randomnumbers3 = 100 + (200-100)*rand(71,1);
for j = 1:size(table)
if table.Var1(j) == "a"
table.Result1(j) = 0;
elseif table.Var1(j) == "b"
if table.Mode(j) == "monday"
table.Result1(j) = randomnumbers2(j)
elseif table.Mode(j) == "thursday"
table.Result1(j) = randomnumbers2(j)
else
table.Result1(j) = randomnumbers3(j)
end
else
break
end
end
for j = 1:size(table)
if table.Var2(j) == "a"
table.Result2(j) = 0;
elseif table.Var2(j) == "b"
if table.Mode(j) =="monday"
table.Result2(j) == randomnumbers2(j)
elseif table.Mode(j) == "thursday"
table.Result2(j) = randomnumbers2(j)
else
table.Result2(j) = randomnumbers3(j)
end
else
break
end
end
Hello, this is pieece of my code.
I have a table of size 71x15. I want to check if variables stored in columns 2:10 are either "a", "b" or "c". If they are a, I would like to assign the value of 0 in new column. If they are B, I would like to assign the value from array randomnumbers 2/random numbers 3, depending on which day is stored in column "mode" and if they are "c" the code should do nothing and move to the next row.
The problem is that, for the column Var1, this loop presented above works fine. If I repeat the same loop for respectively Var2, Var, Var4...Var10, all the numbers assigned are zero.
Could you please tell me how to fix this, and more importantly, if there exists a possibility to create function from that that does it whenever we call it? As you can see, its inconvinient to crete 9 loops like this, to check for those strings in columns from Var2...Var10.
Thanks in advance!
댓글 수: 8
Walter Roberson
2022년 2월 21일
Where do you assign a value to j ?
Kacper Witasinski
2022년 2월 21일
Walter Roberson
2022년 2월 21일
What is size() of table? Is it a scalar? If it is not a scalar, then how does the : operator behave when used with a non-scalar ?
Kacper Witasinski
2022년 2월 21일
편집: Kacper Witasinski
2022년 2월 21일
Kacper Witasinski
2022년 2월 21일
randnumbers2 = rand(3, 1)
randnumbers3 = rand(3, 1)
Table = table()
Table.Col1 = rand(3, 1)
Table.Col2 = string(('a' : 'c').')
% what would the result be for the above?
Walter Roberson
2022년 2월 21일
The break you have stops executing the loop as soon as you encounter the first entry that is not "a" or "b"
Kacper Witasinski
2022년 2월 21일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!