How can I assign a single column of a 0x10 empty table

16 次查看(过去 30 天)
Hello folks,
I have a 0x10 empty table. That is: the table variables are declared but there is no actual data entries in the table. Let's call it
myTable
I am trying to assign the first column of the table like so:
myTable.firstVariable = [0:1:length(x)]';
But alas this returns the following error:
To assign to or create a variable in a table, the number of rows must match the height of the table.
Of course, the height of the table is currently 0. Its height will be dictated by another variable x. I do not care what the other variables will be populated with at this time (i.e. [], or 0, or NaN, or whatever), I will populate them later.
How can I assign the first variable?
Thank you!
PS: I cannot use a struct or array. The datatype must remain as a table.

采纳的回答

Star Strider
Star Strider 2021-11-29
Preallocation for table arrays is possible.
myTable = table('Size',[10 1], 'VariableNames',{'firstVariable'}, 'VariableTypes',{'double'})
myTable = 10×1 table
firstVariable _____________ 0 0 0 0 0 0 0 0 0 0
myTable.firstVariable = (1:numel(myTable.firstVariable)).'
myTable = 10×1 table
firstVariable _____________ 1 2 3 4 5 6 7 8 9 10
See Preallocate Table and Fill Rows for an extended discussion.
.

更多回答(1 个)

Matt J
Matt J 2021-11-29
编辑:Matt J 2021-11-29
I cannot use a struct or array. The datatype must remain as a table.
You cannot avoid wokring with arrays as an intermediary, however, the data does not have to remain as an array. You can convert it to a table, e.g.,
T=nan(5,10);
T(:,1)=1:5;
T=array2table(T)
T = 5×10 table
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 __ ___ ___ ___ ___ ___ ___ ___ ___ ___ 1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 2 NaN NaN NaN NaN NaN NaN NaN NaN NaN 3 NaN NaN NaN NaN NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN NaN NaN NaN NaN 5 NaN NaN NaN NaN NaN NaN NaN NaN NaN

类别

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

标签

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by