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.

133 次查看(过去 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