Effacer les filtres
Effacer les filtres

How to use writetable in a for loop

18 vues (au cours des 30 derniers jours)
Daisy
Daisy le 25 Mar 2022
Commenté : Daisy le 28 Mar 2022
Hi everyone,
I want to write a script that, for all files in my folder, selects a specific value out of a table and puts them together in one new table. I am using a for loop including the writetable command, but it creates a new file containing only the value of the last iteration. What am I doing wrong?
volumeTable = dir('*properties_aparc.mat') %% here I select the files I need out of my folder
for k = 1:length(volumeTable);
baseFilename = volumeTable(k).name;
fullFilename = fullfile(volumeTable(k).folder,baseFilename);
load(fullFilename);
T = regionPropertiesTable(31,4) %% Select row 31, column 4 from the regionPropertiesTable
writetable(T)
end
When I use regionPropertiesTable(x,y) outside of this code, it gives me a 1x1 table. I want to add the 1x1 tables of all my participants together into one file (.txt is fine).
Thanks in advance for your time! I am relatively new to MatLab.

Réponse acceptée

VBBV
VBBV le 25 Mar 2022
T{k} = regionPropertiesTable(31,4)
Use a cell array for all participants. Later use
writetable(T)
Outside of loop
  4 commentaires
Daisy
Daisy le 25 Mar 2022
This one gives me the error 'Invalid parameter name: WriteMode'
Daisy
Daisy le 28 Mar 2022
Hi VBBV, I want to thank you again for your help, I solved my issue :)
As you suggested, I created a cell array and used the writetable command including 'WriteMode' and 'Append', which now creates a csv file with the values I need from the tables in one column. For others struggling like me, here is my code:
volumeTable = dir('*properties_aparc.mat')
for k = 1:length(volumeTable)
baseFilename = volumeTable(k).name;
fullFilename = fullfile(volumeTable(k).folder,baseFilename);
fprintf(1,'Now reading %s\n',fullFilename)
load(fullFilename);
T = regionPropertiesTable(31,4); %% takes ROI volume out of big table and creates a 1x1 table
Volumes{k} = T; %% puts all 1x1 tables in a cell array
writetable(Volumes{k}, 'VolumesTest.csv','WriteMode','Append') %%puts all ROI volumes in 1 column in a .csv file
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by