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

82 views (last 30 days)
Are Mjaavatten on 4 Mar 2022
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?
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.

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.
##### 2 CommentsShowHide 1 older comment
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)

### Categories

Find more on Tables in Help Center and File Exchange

R2021b

### Community Treasure Hunt

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

Start Hunting!