# Assign a table coloumn a particular data type

2 views (last 30 days)
Andrea Sbaragli on 24 May 2021
Commented: Steven Lord on 24 May 2021
For other reasons I cannot initialize my table as A=table but I must do A= zeros(height(B), 8) and then through array2table I convert my array into a table.
At this point how could I set A(:,2) and A(:,6) to datetime null values?

Benjamin Kraus on 24 May 2021
Edited: Benjamin Kraus on 24 May 2021
You cannot mix data types within a double matrix, but you can mix data types within a table.
So, you cannot convert two columns of A into datetime before creating the table.
I'm curious why you cannot create your table empty and then add colums as needed.
For example:
tbl = table;
B = zeros(10,1);
tbl.Var1 = B;
tbl.Var2 = NaT(size(B))
tbl = 10×2 table
Var1 Var2 ____ ____ 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT
However, if that doesn't work for some reason, maybe this is what you are looking for?
B = zeros(10,1);
A = zeros(height(B),8);
tbl = array2table(A);
tbl.A2 = NaT(height(A),1);
tbl.A6 = NaT(height(A),1)
tbl = 10×8 table
A1 A2 A3 A4 A5 A6 A7 A8 __ ___ __ __ __ ___ __ __ 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0
##### 2 CommentsShowHide 1 older comment
Steven Lord on 24 May 2021
In recent releases:
types = repmat("double", 1, 8);
types([2 6]) = "datetime";
tbl = table('size', [10 8], 'VariableNames', "A"+(1:8), 'VariableTypes', types)
tbl = 10×8 table
A1 A2 A3 A4 A5 A6 A7 A8 __ ___ __ __ __ ___ __ __ 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0