Working With Matlab Tables
40 views (last 30 days)
Show older comments
Hello all
Seems like a simple question but it driving me insane.
I have imported data from an excel sheet into a Table.
I just want to change the value of an element in the table, i remember from somewhere that i could use the matrix notation so i used the following command:-
Data(1,4) = 'Tony'
where Data is the table name, and i want row 1, column 4 to be changed to Tony
But i get the following error:-
>> Data(1,4)='Tony'
The number of table variables in an assignment must match.
Can i ask why this does not work?
Thank you
0 Comments
Answers (4)
Image Analyst
on 17 Nov 2019
Since you want to change the CONTENTS of the table, use braces not parentheses.
Data{1,4}='Tony'
Steven Lord
on 17 Nov 2019
Use parentheses to extract a smaller table from a larger table or to assign a smaller table into a larger one.
Use curly braces to extract data from a table or store data into a table when the data is not itself a table.
Data{1, 4} = 'Tony'; is probably what you want, since 'Tony' is not itself a table.
See the sections "Tables Containing Specified Rows and Variables" and "Extract Data from Specified Rows and Variables" on this documentation page for examples of the differences between Data(...) and Data{...}.
0 Comments
Star Strider
on 17 Nov 2019
I created my own table to test my code. (I didn’t post it previously because the other two Answers had already appeared.)
The substitution only works in my code with this syntax:
Data(1,4) = {'Tony'};
Example illustration:
Chars = cell2table({'Abcd';'Efgh';'Ijkl';'Mnop';'Qrst';'Uvwxyz'},'VariableNames',{'Chars'}); % Create Table
Data = [array2table(rand(6,3)) Chars]; % Create Table
Data(1,4) = {'Tony'}; % Substitute Element
See if that works with your table.
0 Comments
per isakson
on 17 Nov 2019
Edited: per isakson
on 17 Nov 2019
"I remember from somewhere" With Matlab that doesn't work for me. I need to consult the documentation more often than not. This does the trick (on R2018b)
Data{1,4} = {'Tony'};
and this
Data.Customer(1) = {'Tony'};
"Why" The value of Data{1,4} is a cell.
>> class( Data{1,4} )
ans =
'cell'
Thus the new value need to be a cell. (My mental model.)
Star Strider shows that
Data(1,4) = {'Tony'};
works, which puzzles me. Is that documented behavior?
0 Comments
See Also
Categories
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!