I want to export data to txt file in Loop

13 Ansichten (letzte 30 Tage)
The boy
The boy am 1 Feb. 2023
Kommentiert: The boy am 3 Feb. 2023
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

Akzeptierte Antwort

Stephen23
Stephen23 am 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
  1 Kommentar
The boy
The boy am 3 Feb. 2023
Thanks Stephen23, I learned it . Your code work well!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jeremy Hughes
Jeremy Hughes am 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

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by