How to fixe the For loop
古いコメントを表示
Hello. Could anyone tell me how to fix the for-loop code?
>>
b = {'Hello world'; 'Good morning';'Good afternoon';'6 years';'10+ years';'<1 year'}
z=array2table(b,'VariableNames', {'var1'})
for i=1:length(z)
if z(i,1)='Hello world'; z(i,1)=1;
else z(i,1)=0;
end
end
Output:
b =
6×1 cell array
{'Hello world' }
{'Good morning' }
{'Good afternoon'}
{'6 years' }
{'10+ years' }
{'<1 year' }
z =
6×1 table
var1
__________________
{'Hello world' }
{'Good morning' }
{'Good afternoon'}
{'6 years' }
{'10+ years' }
{'<1 year' }
if z(i,1)='Hello world'; z(i,1)=1;
↑
Incorrect use of '=' operator. Assign a value to a variable using '=' and compare values for equality using '=='.
採用された回答
その他の回答 (1 件)
You need to use == for equality tests, not =. That said, don't try testing character arrays for equality that way either. Unless they have the same number of characters, you'll have problems. Use strcmp(), strcmpi(), or ismember().
b = {'Hello world'; 'Good morning';'Good afternoon';'6 years';'10+ years';'<1 year';'0'}
z=array2table(b,'VariableNames', {'var1'})
for i=1:height(z) % use height/width/size/numel, not length
if strcmp(z{i,'var1'},'Hello world'); % use curly braces for indexing here. you can either use column number or name
z{i,'var1'}={'1'}; % i'm assuming that elements of a table column should share the same datatype
elseif strcmp(z{i,'var1'},'0'); % if there's a condition, use elseif instead of else
z{i,'var1'}={'something else'};
else
% do something else
end
end
z % see what changed
gives
z =
var1
________________
'Hello world'
'Good morning'
'Good afternoon'
'6 years'
'10+ years'
'<1 year'
'0'
z =
var1
________________
'1'
'Good morning'
'Good afternoon'
'6 years'
'10+ years'
'<1 year'
'something else'
I added an extra element to your list so that the second case was demonstrated.
4 件のコメント
Oleksandr Puchak
2021 年 4 月 23 日
DGM
2021 年 4 月 23 日
if you use {1}, you're inserting a numeric value. If you use {'1'}, you're inserting a string. As I mentioned in the comments, a column in a table typically contains data of one type. There's nothing stopping you from mixing datatypes though. It all depends on what you want to do.
Oleksandr Puchak
2021 年 4 月 23 日
Oleksandr Puchak
2021 年 4 月 23 日
カテゴリ
ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

