Changing the variable names for multiple tables within a loop that imports the data

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

 채택된 답변

Stephen23
Stephen23 2021년 5월 23일
편집: Stephen23 2021년 5월 23일
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

Hi Stephen, thanks for your help. I'm not sure if this is just me misunderstanding the code, but when I run this I only get one table as opposed to six.
"...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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Structures에 대해 자세히 알아보기

제품

릴리스

R2020b

질문:

2021년 5월 23일

댓글:

2021년 5월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by