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

82 views (last 30 days)
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?
  1 Comment
Stephen23 on 4 Mar 2022
"There may be a good reason for this"
Yes: single character vectors are presumed to be part of name-value arguments.

Sign in to comment.

Accepted Answer

Simon Chan
Simon Chan on 4 Mar 2022
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.
Csaba Zoltán Kertész
Csaba Zoltán Kertész on 13 Mar 2022
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)

Sign in to comment.

More Answers (0)


Find more on Tables in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!