How to convert all the cell in a columns from char to string

79 次查看(过去 30 天)
I have a table that contains char columns and double columns. I want to keep the same format but convert all the char into string to do some operation after.
'ABc' 'XYZ'
To : "ABC" "XYZ"

采纳的回答

Guillaume
Guillaume 2017-9-7
Hum! it's not actually that easy as you can't use the syntax yourtable(:, somecolumns) to change the type of the column from cell array to string.
Option 1: use . indexing over the char columns
for columnname = yourcharcolumnnames %where yourcharcolumnnames is a cell array of the char column names
yourtable.(columnname{1}) = string(yourtable.(columnname{1}));
end
Option 2: create an auxiliary function for varfun that can take any column type
function column = convertcolumn(column)
if iscell(column) && ~isempty(column) && ischar(column)
column = string(column);
end
end
which you use with varfun:
newtable = varfun(@convertcolumn, yourtable);
  1 个评论
Marie-Claude Boisvert
Option1 Work,:) I will specified my columns and its good :D Thanks a lot
Option2 run but the columns are still char

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2017-9-7
This will do it:
% Set up
c = {'ABc'; 'XYZ'}
d = rand(2,1)
t = table(c, d, 'VariableNames', {'letters', 'numbers'})
% Now begin.
% First extract existing letters column of chars into a cell array.
cColumn = t{:, 'letters'}
% Convert char column to strings.
sColumn = string(cColumn)
% Make that into a table of strings with the same variable name, "strings"
st = table(sColumn, 'VariableNames', {'letters'})
% Delete existing char column.
t(:, 'letters') = []
% Add this column to the table in the same place as the char column was.
t = [st, t]

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by