我正在尝试使用writetable
和writetable(..., 'WriteRowNames', true)
从表中写入CSV,但是当我这样做时,Matlab默认将Row
放在(1,1)单元格中的CSV。我知道我可以通过设置Row
将myTable.Properties.DimensionNames{1}
更改为另一个字符串,但我无法将其设置为空白,因此我似乎不得不在其中添加一些文本(1,1)细胞。
有没有办法让我的CSV的(1,1)元素留空并仍然写入行名?
答案 0 :(得分:3)
似乎没有办法将'DimensionNames'
field中的任何字符数组设置为空或空白。一种选择是像上面那样创建.csv文件,然后使用xlswrite
清除第一个单元格:
xlswrite('your_file.csv', {''}, 1, 'A1');
即使xlswrite
文档声明文件参数应该是.xls,它仍然适用于我。
答案 1 :(得分:1)
另一种方法可以使用memmapfile
来修改内存中文件的前导字节。
例如:
% Set up data
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(Age, Height, Weight, BloodPressure, 'RowNames', LastName);
% Write data to CSV
fname = 'asdf.csv';
writetable(T, fname, 'WriteRowNames', true)
% Overwrite row dimension name in the first row
% Use memmapfile to map only the dimension name to memory
tmp = memmapfile(fname, 'Writable', true, 'Repeat', numel(T.Properties.DimensionNames{1}));
tmp.Data(:) = 32; % Change to the ASCII code for a space
clear('tmp'); % Clean up
这让我们来自:
Row,Age,Height,Weight,BloodPressure_1,BloodPressure_2
Smith,38,71,176,124,93
Johnson,43,69,163,109,77
Williams,38,64,131,125,83
Jones,40,67,133,117,75
Brown,49,64,119,122,80
要:
,Age,Height,Weight,BloodPressure_1,BloodPressure_2
Smith,38,71,176,124,93
Johnson,43,69,163,109,77
Williams,38,64,131,125,83
Jones,40,67,133,117,75
Brown,49,64,119,122,80
不幸的是没有完全删除,但这是一种有趣的方法。
或者,您可以使用MATLAB的low level file IO将行维名称后的所有内容复制到新文件中,然后覆盖原始文件:
fID = fopen(fname, 'r');
fID2 = fopen('tmp.csv', 'w');
fseek(fID, numel(T.Properties.DimensionNames{1}), 'bof');
fwrite(fID2, fread(fID));
fclose(fID);
fclose(fID2);
movefile('tmp.csv', fname);
产生:
,Age,Height,Weight,BloodPressure_1,BloodPressure_2
Smith,38,71,176,124,93
Johnson,43,69,163,109,77
Williams,38,64,131,125,83
Jones,40,67,133,117,75
Brown,49,64,119,122,80
答案 2 :(得分:-1)
不,目前不支持。我看到的唯一解决方法是使用占位符作为维度名称,然后以编程方式将其从文件中删除。
答案 3 :(得分:-1)
writetable(T,fileFullPath,'WriteVariableNames',false);
如果将“ WriteVariableNames”指定为false(默认值为true),则变量/维度名称将不会写入输出文件中。
引用链接:https://uk.mathworks.com/help/matlab/ref/writetable.html