Changing the variable names for multiple tables within a loop that imports the data
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Amy M
el 23 de Mayo de 2021
Comentada: Stephen23
el 24 de Mayo de 2021
I have imported a series of text files using the code posted below and the headers are 'x_________', 'x_______1' etc. I have been able to change the headers manually using T.Properties.VariableNames but for a set of 6 tables with 5 columns each this gets tedious, plus I will be importing multiple table sets like this. I want the same column headers across all of the tables (i.e. the variable names themselves are not dynamic). How can I incorporate this into the for loop in order to save time and space? Thanks!
for i=[0:10:50]
filename = ['UCS_stress_',num2str(i),'.txt'];
eval(['per_' num2str(i) '= readtable(filename)'])
end
0 comentarios
Respuesta aceptada
Stephen23
el 23 de Mayo de 2021
Editada: Stephen23
el 23 de Mayo de 2021
Using eval is a misdirection that forces you into writing slow, inefficient, complex code:
It is much simpler and more efficient to use basic indexing, just like MATLAB was designed for:
C = {cell array of the five table variable names};
V = 0:10:50; % those square brackets were superfluous.
N = numel(V)
T = cell(1,N); % preallocate cell array.
for k = 1:N
fnm = sprintf('UCS_stress_%d.txt',V(k));
tmp = readtable(fnm);
tmp.Properties.VariableNames = C;
T{k} = tmp; % basic indexing.
end
2 comentarios
Stephen23
el 24 de Mayo de 2021
"...but when I run this I only get one table as opposed to six."
Did you look inside the cell array T ? All six of the tables are stored in there.
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!