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

4 views (last 30 days)
Rafael Cordero on 29 Nov 2021
Answered: Star Strider on 29 Nov 2021
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 on 29 Nov 2021
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.
.

Matt J on 29 Nov 2021
Edited: Matt J on 29 Nov 2021
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

R2021a

### Community Treasure Hunt

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

Start Hunting!