Inserting string into specific field in table
95 次查看(过去 30 天)
显示 更早的评论
I'm trying to insert a string into a specific cell in a table. I've tried a handful of combinations, including curly brackets, cellstr()... but can't seem to get the right combination. Stand-along code is below; thanks for any help, I am sure it is something simple that I am missing.
files = {'file1.txt', 'file2.txt', 'file3.txt'};
mytable = NaN(length(files), 4);
mytable = array2table(mytable);
mytable.Properties.VariableNames = {'FILENAME', 'valueA', 'valueB', 'valueC'};
for i = 1:length(files)
filename = char(files(i));
% do things
mytable.FILENAME{i} = filename;
% also save other values; these are all doubles, so they write to table easily
end
Here is the error message:
Unable to perform assignment because brace indexing is not supported for variables of
this type.
Here are some other combos I have tried:
mytable.FILENAME{i} = cellstr(filename);
Unable to perform assignment because brace indexing is not supported for variables of
this type.
mytable.FILENAME{i} = filename;
Unable to perform assignment because brace indexing is not supported for variables of
this type.
mytable.FILENAME(i,:) = filename;
Unable to perform assignment because the size of the left side is 1-by-1 and the size
of the right side is 1-by-9.
mytable.FILENAME(i,:) = cellstr(filename);
Conversion to double from cell is not possible.
1 个评论
Cyril CRIER
2020-8-3
Hi,
I had the same problem, and when I try this combination:
mytable.FILENAME(i,1) = filename; ("1" for the first column) instead of mytable.FILENAME(i,:) = filename;
I get a "NaN" value instead of the String chain I want to assign, but no Error anymore
采纳的回答
Cris LaPierre
2020-8-3
Table variables have an assigned data type. You must set the datatype to match the data you want to store. Filenames are text, not numbers.
files = {'file1.txt', 'file2.txt', 'file3.txt'};
mytable = NaN(length(files), 3);
mytable = [table(strings(length(files), 1)), array2table(mytable)];
mytable.Properties.VariableNames = {'FILENAME', 'valueA', 'valueB', 'valueC'}
for i = 1:length(files)
filename = char(files(i));
% do things
mytable.FILENAME(i) = filename
% also save other values; these are all doubles, so they write to table easily
end
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!