Changing the variable names for multiple tables within a loop that imports the data
8 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Stephen23
on 23 May 2021
Edited: Stephen23
on 23 May 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 Comments
Stephen23
on 24 May 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.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!