Problem with converting uitable to table (array2table) with strange number of column names

6 次查看(过去 30 天)
Hello, I have a UITable that on startup has 4 columns.
I want to create some dummy data (3 columns) and play with the different save options (writecell, writematrix and writetable) to see which one handles NaNs the best and can save the column names.
I am hence steering towards writetable.
However, when I clear the table and re-enter my dummy data via:
uit=app.UITable;
uit.Data=[];
r = randi([0,10],10,3)
uit.Data = [r];
I notice that the number of column names is still 4 and not 3, yet the data size in columns is 3!
T=app.UITable;
vn=T.ColumnName
vn = %UITable Column Names
4×1 cell array
{'Column 1'}
{'Column 2'}
{'Column 3'}
{'Column 4'}
ans = % UITable Data size
10 3
hence the following fails
T = array2table(data, 'VariableNames',vn')
Error using array2table
The VariableNames property must contain one name for each variable in the table.
Any suggestions please?
(and a 2nd question, most of the time my data is doubles, however occasionally its a cell array - when I want e.g. some text. I assume the only chnage I would need is when creating the table I would use cell2table instead of array2table?)
  1 个评论
Voss
Voss 2025-1-25
"... when I clear the table and re-enter my dummy data ... Any suggestions please?"
My suggestion would be to update ColumnName whenever necessary, including when the number of columns of Data changes.

请先登录,再进行评论。

采纳的回答

Jason
Jason 2025-1-25
编辑:Jason 2025-1-25
This seems to work, but is quite a lot for such a simple task
T=app.UITable;
vn=T.ColumnName;
vn=vn' %Transpose so horizontal
data=T.Data;
[row,cols]=size(data);
[sy,nnames]=size(vn)
val=nnames-cols;
vn2=vn;
switch true
case val<0
ReportMessage(app,'less than zero, need less Vn')
n=abs(val) % number of headings less than data cols
vn2=vn(1:nnames);
for i=1:n
vn2(end+i)={'NA'}
end
case val>0
ReportMessage(app,'Greater than zero - need more vn')
vn2=vn(1:cols);
end
T = array2table(data, 'VariableNames',vn2)
  6 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by