I want to export data to txt file in Loop

19 visualizzazioni (ultimi 30 giorni)
files = dir('*.txt');
N =length(files);
for i=1:N
data = readtable(files(i).name);
data = removevars(data, {'Var9','Var10'});
% save to txt file
newtxt = table2cell(finalfile(:,1:9));
writecell(newtxt,'newfile.txt','Delimiter','tab');
type newfile.txt
end
*** my code above is try to remove some columm in a txt file, I have 30 txt file like that need to work in a LOOP.
Everytime I write the txt file, the new file is overwritten in the same file name, I do not know how to write the txt file with using LOOP . Please help me to fix the code again. Thank you

Risposta accettata

Stephen23
Stephen23 il 1 Feb 2023
P = 'absolute or relative path to where the files are saved';
S = dir(fullfile(P,'*.txt'));
for k = 1:numel(S)
F = fullfile(S(k).folder,S(k).name);
D = readtable(F);
D = removevars(D, {'Var9','Var10'});
% new filename
[~,F,E] = fileparts(S(k).name);
F = sprintf('%s_new%s',F,E);
% save to txt file
newtxt = table2cell(finalfile(:,1:9));
writecell(newtxt,F,'Delimiter','tab');
end

Più risposte (1)

Jeremy Hughes
Jeremy Hughes il 2 Feb 2023
If you want to write the data to one file, this should work
for i=1:N
data = readtable(files(i).name);
% Assuming you're removing data you don't need (and that Var9 Var10 are # 9 and 10), this is the most concise way.
writetable(data(:,1:8),'newfile.txt','Delimiter','\t','WriteMode','append');
end
If you want do write to different files:
mkdir("newplace")
for i=1:N
data = readtable(files(i).name);
newname = fullfile("./newplace","new_"+files(i).name);
writetable(data(:,1:8),newname,'Delimiter','\t');
end

Community Treasure Hunt

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

Start Hunting!

Translated by