add new row to table with missing values

8 次查看(过去 30 天)
How can I add a new row to an existing table with missing values?
For illustration, I define a table T with 4 variables: name, city, age, height.
V.name = "Ann";
V.city = "Berlin";
V.age = 24;
V.height = 172;
T = struct2table(V);
Now, I want to add another row to this table where the new row only contains values for 3 of the variables (out of 4).
V2.name = "Luka";
V2.city = "Tokyo";
V2.age = 30;
T = [T; struct2table(V2)];
All tables being vertically concatenated must have the same number of variables.
This leads to the following error:
"All tables being vertically concatenated must have the same number of variables."
What's the best practice for such situations?

回答(1 个)

KSSV
KSSV 2022-1-18
V.name = "Ann";
V.city = "Berlin";
V.age = 24;
V.height = 172;
T1 = struct2table(V);
V2.name = "Luka";
V2.city = "Tokyo";
V2.age = 30;
T2 = struct2table(V2);
T2.height = NaN ;
T = [T1;T2]
T = 2×4 table
name city age height ______ ________ ___ ______ "Ann" "Berlin" 24 172 "Luka" "Tokyo" 30 NaN
  4 个评论
Amirali Kamalian
Amirali Kamalian 2022-1-18
In each sequence of a for loop, a new row is added to the table. The values for the new row are collected in a struct and then struct2table is called to update the table with a new row.
Are you suggesting to collect all the data in a struct array and then convert that to a table in a single struct2table call? Does that give more flexibility in terms of "missing" values?
KSSV
KSSV 2022-1-18
YEs exactly. That makes your life very easy.
V = struct ;
V(1).name = "Ann";
V(1).city = "Berlin";
V(1).age = 24;
V(1).height = 172;
V(2).name = "Luka";
V(2).city = "Tokyo";
V(2).age = 30;
T = struct2table(V)
T = 2×4 table
name city age height ______ ________ ___ ____________ "Ann" "Berlin" 24 {[ 172]} "Luka" "Tokyo" 30 {0×0 double}

请先登录,再进行评论。

类别

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

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by