필터 지우기
필터 지우기

Need Help Appending data to a table in every iteration from a for loop .I want to add new data to New_Table every loop but not overwrite the existing data.

조회 수: 149 (최근 30일)
filename = 'Notes.xls';
sheet = 1;
T = readtable(filename);
App_Names= T(:,4);
Unique_Data = unique(App_Names);
N = height (Unique_Data);
M = height(T);
for j = 1: N
app_name = Unique_Data{j,1}
p = (strcmpi(app_name,T{:,:}))
[row,col] = find(p)
New_Table = [ T(row,1),T(row,2),T(row,3),T(row,4);]
end

채택된 답변

KSSV
KSSV 2018년 9월 25일
T = table(rand(2,1),rand(2,1),'VariableNames',{'Age','Weight'},'RowNames',{'P1','P2'}) ;
for i = 3:10
Tnew = table(rand,rand,'VariableNames',{'Age','Weight'},'RowNames',{['P',num2str(i)]}) ;
T = [T ; Tnew]
end

추가 답변 (1개)

Peter Perkins
Peter Perkins 2018년 10월 1일
I can't follow the original code at all, but in general, it's not a great idea, performance-wise, to groew a table in a loop. This is much faster:
c = cell(1,n)
for i = 1:n
c{i} = table(...);
end
t = vertcat(c{:});
  댓글 수: 3
Peter Perkins
Peter Perkins 2020년 7월 28일
편집: Peter Perkins 2020년 7월 28일
If the names are not the same, then why are you vertically concatenating them?
In my code snippet anobe, they will be the same (and set to the defaults), but if you want to vertically combine tables that have different variable names, then you have to reconcile the names, either by making the names on existing variables the same in all tables, or by adding variables to your tables to give them all the union of the different names.
That assumes that you want to turn all your tables into one longer table. Maybe you want a cell array, with a table in each cell, kept separately.

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

카테고리

Help CenterFile Exchange에서 Tables에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by