How do I create a table containing a character array if it has only one row?

64 次查看(过去 30 天)
This works fine:
Time = [1;2];Force = [12;17];ID = ['ab';'cd'];
T = table(Time,Force,ID)
But this fails:
Time = [1];Force = [12];ID = ['ab'];
T = table(Time,Force,ID)
There may be a good reason for this, but the behaviour does not seem logical to me.
Does anyone have good workaround?

采纳的回答

Simon Chan
Simon Chan 2022-3-4
Time = [1];Force = [12];ID = {'ab'};
T = table(Time,Force,ID)
T = 1×3 table
Time Force ID ____ _____ ______ 1 12 {'ab'}
Actually, the error message tells you the solution.
Time = [1];Force = [12];ID = ['ab'];
T = table(Time,Force,ID)
Error using table (line 282)
Wrong number of arguments.

Caused by:
You might have intended to create a one-row table with the character vector 'ab' as one of its variables. To store text data in a table, use a string array or a cell array of character vectors rather than character arrays. Alternatively, create a cell array with one row, and convert that to a table using CELL2TABLE.
  2 个评论
Are Mjaavatten
Are Mjaavatten 2022-3-4
I did read that, but I did not quite grasp it. Thank for spoonfeeding it to me.
This seems to work for any number of rows:
T = table(Time,Force,cellstr(ID))
Csaba Zoltán Kertész
You could also try to use strings instead of character vectors if you do not want to hassle with cells:
Time = [1]; Force = [12]; ID = ["ab"];
T = table(Time, Force, ID)

请先登录,再进行评论。

更多回答(0 个)

类别

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

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by