How can I replace an entire row in a table?

12 views (last 30 days)
I have a table with many columns. Some of the columns have string elements, while other columns have double values. The code below creates this table:
% Create table columns
col1 = {'one';'two';'three'};
col2 = [1;2;3];
col3 = {'four';'five';'six'};
col4 = [4;5;6];
% Create table
myTable = table(col1,col2,col3,col4);
I also have a cell that has a single row that matches the pattern in the table as follows:
% Create cell
myCell = {'seven',8,'nine',10};
I would like to assign the cell array to replace the first row in the table, but when I execute the following code:
myTable(1,:) = myCell;
I get the following error:
Error using table/subsasgnParens (line 205)
Subscripted assignment dimension mismatch for table variable 'col1'.
Error in table/subsasgn (line 60)
t = subsasgnParens(t,s,b,creating);
How can I replace an entire row within a table?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 30 May 2018
The error is expected given that an entire row within a table is itself a table, as such trying to assign a cell array to it is incompatible. In order to replace the entire row with the contents of the cell array you would need to first convert the cell array to a table and then do the assignment as follows:
% Convert cell to 'table'
myTableCell = cell2table(myCell);
% Assign to first row
myTable(1,:) = myTableCell;
  1 Comment
Jim Hokanson
Jim Hokanson on 2 Apr 2022
Doesn't always work ...:
s = struct('a',{'a','b'},'b',{'c','d'})
t1 = struct2table(s);
t2 = struct2table(s(1));
t1(2,:) = t2
Conversion to cell from char is not possible.

Sign in to comment.

More Answers (0)

Categories

Find more on Cell Arrays in Help Center and File Exchange

Tags

No tags entered yet.

Products


Release

R2013b

Community Treasure Hunt

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

Start Hunting!