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

127 views (last 30 days)
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"

Accepted Answer

Guillaume on 7 Sep 2017
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}));
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);
which you use with varfun:
newtable = varfun(@convertcolumn, yourtable);
  1 Comment
Marie-Claude Boisvert
Marie-Claude Boisvert on 7 Sep 2017
Option1 Work,:) I will specified my columns and its good :D Thanks a lot
Option2 run but the columns are still char

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 7 Sep 2017
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]

Community Treasure Hunt

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

Start Hunting!