Create table in a for loop with text
3 ビュー (過去 30 日間)
古いコメントを表示
I am creating a table in a for loop in Matlab. The table should contain the answer for each iteration of the loop.
On each iteration the, the answer that is produced is the name of a soccer player. I want to create a table that stores the list of the names of soccer players. For example
Player
Ronaldo
Messi
When I write the below code, it comes out as NaN.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/808454/image.png)
1 件のコメント
Image Analyst
2021 年 11 月 21 日
After you read this:
attach one of your CSV files and your m-file. We cannot run an image and can't run an m-file with no data.
And I think B should be
B = cell(length(files), 1);
before the loop.
回答 (2 件)
Yongjian Feng
2021 年 11 月 21 日
編集済み: Yongjian Feng
2021 年 11 月 21 日
Try this:
files = dir('*.csv');
B = {};
for i = 1:length(files)
csv = readtable(files(i).name, 'Range', 'A1:I8'); % Double check please to make sure
Player = csv(1,2);
Player = table2array(Player) % no ; here, print it out for debug. put it back later
%Player=str2double(Player); % WHY? A player's name can't be converted
%to double
B{end+1} = Player;
end
T = table(B', 'VariableName', {'Player'})
2 件のコメント
Peter Perkins
2021 年 11 月 23 日
編集済み: Peter Perkins
2021 年 11 月 23 日
This
Player = csv(1,2);
Player = table2array(Player)
can't be the best way to do this. More than likely
Player = csv{1,2};
or (much) better yet:
Player = csv.Player(1) % or whatever column heading is in the file
Sean de Wolski
2021 年 11 月 23 日
Confused as to why you're using excel ranges with csv input. Either way, this should be doable in one shot with readall(datastore).
ds = datastore("*.csv")
ds % MODIFY the settings to only read the (1,2) element. Specify header rows, text type as string, etc.
T = readall(ds)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Text Files についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!