可写的 Matlab(附加表?)
writetable Matlab (appendtable?)
如果你有 table class "T"
T =
Var1 Var2 Var3 Var4
____ ________ ____ _____
M 45 45 'NY' true
F 41 32 'CA' false
M 40 34 'MA' false
并且您想将这些值写入您可以使用的文件中,例如:
writetable(T,'myData.txt','Delimiter', ...)
但这会删除您在 myData.txt 中的所有信息。我想知道 table 是否有追加函数,或者以某种方式写入而不删除 myData.txt.
的旧内容
所以,图片:
type myData.txt
你好
writetable(T, ...)
type myData.txt
你好
Var1 Var2 Var3 Var4
M 45 45 'NY' true
F 41 32 'CA' false
M 40 34 'MA' false
一种方法是使用 fopen() 写入文件。创建 table:
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
T = table(LastName,Age,Height,Weight)
写入文件:
writetable(T,'table.csv')
再次打开文件:
fid = fopen('table.csv','a')
第二次写出table:
fmt = varfun(@(x) class(x),T,'OutputFormat','cell');
fmt(strcmp(fmt,'double'))={'%g'};
fmt(strcmp(fmt,'cell'))={'%s'};
fmt=[strjoin(fmt,',') '\n']
for r=1:size(T,1)
x=table2cell(T(r,:));
fprintf(fid,fmt,x{:});
end
fclose(fid);
Bob 的回答非常适合小 tables。对于大的 tables,为了避免 for 循环,我建议将第二个 table 写入第二个文件,然后就可以合并文件了。这是代码:
writetable(T1,'data_01.csv');
writetable(T2,'data_02.csv','WriteVariableNames',false);
你不想在第二个文件上有变量名,这样你就可以将文件完美地合并到一个新文件中。如果你在 Linux 你可以简单地做:
cat data_*.csv >> data.csv
而且,如果 table 非常大,我建议使用 'datastore'。这是一个代码:
writetable(T1,'data_01.csv');
writetable(T2,'data_02.csv');
这里我们也应该将变量名保存在第二个文件中,这样数据存储功能才能正确读取文件:
ds = datastore('data_*.csv');
然后,您可以使用 'read' 函数逐片读取或使用 'readall' 函数完整读取,具体取决于您的需要。请检查文档。
如果你有 table class "T"
T =
Var1 Var2 Var3 Var4
____ ________ ____ _____
M 45 45 'NY' true
F 41 32 'CA' false
M 40 34 'MA' false
并且您想将这些值写入您可以使用的文件中,例如:
writetable(T,'myData.txt','Delimiter', ...)
但这会删除您在 myData.txt 中的所有信息。我想知道 table 是否有追加函数,或者以某种方式写入而不删除 myData.txt.
的旧内容所以,图片:
type myData.txt
你好
writetable(T, ...)
type myData.txt
你好
Var1 Var2 Var3 Var4
M 45 45 'NY' true
F 41 32 'CA' false
M 40 34 'MA' false
一种方法是使用 fopen() 写入文件。创建 table:
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
T = table(LastName,Age,Height,Weight)
写入文件:
writetable(T,'table.csv')
再次打开文件:
fid = fopen('table.csv','a')
第二次写出table:
fmt = varfun(@(x) class(x),T,'OutputFormat','cell');
fmt(strcmp(fmt,'double'))={'%g'};
fmt(strcmp(fmt,'cell'))={'%s'};
fmt=[strjoin(fmt,',') '\n']
for r=1:size(T,1)
x=table2cell(T(r,:));
fprintf(fid,fmt,x{:});
end
fclose(fid);
Bob 的回答非常适合小 tables。对于大的 tables,为了避免 for 循环,我建议将第二个 table 写入第二个文件,然后就可以合并文件了。这是代码:
writetable(T1,'data_01.csv');
writetable(T2,'data_02.csv','WriteVariableNames',false);
你不想在第二个文件上有变量名,这样你就可以将文件完美地合并到一个新文件中。如果你在 Linux 你可以简单地做:
cat data_*.csv >> data.csv
而且,如果 table 非常大,我建议使用 'datastore'。这是一个代码:
writetable(T1,'data_01.csv');
writetable(T2,'data_02.csv');
这里我们也应该将变量名保存在第二个文件中,这样数据存储功能才能正确读取文件:
ds = datastore('data_*.csv');
然后,您可以使用 'read' 函数逐片读取或使用 'readall' 函数完整读取,具体取决于您的需要。请检查文档。