Create table in a for loop with text
5 次查看(过去 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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!