How do I Remove Double Quotes from my Table?

139 views (last 30 days)
I started with this seemingly simple problem as a way to learn some new skills in MatLab:
Given a list of names in a cell array, sort the list by the last name. My end-goal was to have a table with two columns, last and first name, sorted by last name. I think I'm close to a solution, but the table output includes double quotation marks. I'd like to understand a simple way of removing the quotation marks.
list = {'Barney Google','Snuffy Smith','Dagwood Bumstead'};
list = list';
list2 = split(list);
T = array2table(list2,...
'VariableNames',{'FirstName','LastName'});
T = sortrows(T,'LastName');

Accepted Answer

dpb
dpb on 28 Aug 2018
The quotes are a fignewton of the Matlab display formatting; you can't eliminate them from the command window excepting by either writing the string with a formatting expression or via disp or the like...but while the type indicator characters are displayed, they are not part of the data itself. Illustration with a slight modification; use the new(ish) string class instead of cellstr array...
slist = ["Barney Google";"Snuffy Smith";"Dagwood Bumstead"];
T = array2table(split(slist),'VariableNames',{'First','Last'});
>> T.First(1) % observe the " to indicate a string
ans =
"Barney"
>> disp(T.First(1)) % with disp() only the data shown
Barney
>>
>> strfind(T.First(1),'"') % show there's no " stored...
ans =
[]
>>
>> fprintf('%s\n',T.Last(1)) % or write the data; no quotes, either.
Google
>>
The table output format is not intended to be a printed report; it's intended as a working interface to the use of the table and the reminders of the datatype are consistent with the "ordinary" display of similarly-typed variables in the command window.
  10 Comments
dpb
dpb on 13 Oct 2022
Edited: dpb on 13 Oct 2022
It'll be useless for anything else, much, but what Walter did above was to turn everything to a categorical variable...
row1 = {'0.9984±0.0164' '0.9802±0.0198' '0.9762±0.0238' '0.9962±0.0238'};
row2 = {'0.8746±0.0198' '0.8538±0.0289' '0.8596±0.0886' '0.8596±0.0086'};
varnames = {'Col1' 'Col2' 'Col3' 'Col4'};
rownames = {'Row1' 'Row2'};
T=cell2table([row1;row2],'VariableNames',varnames,'RowNames',rownames);
T=convertvars(T,T.Properties.VariableNames,'categorical')
T = 2×4 table
Col1 Col2 Col3 Col4 _____________ _____________ _____________ _____________ Row1 0.9984±0.0164 0.9802±0.0198 0.9762±0.0238 0.9962±0.0238 Row2 0.8746±0.0198 0.8538±0.0289 0.8596±0.0886 0.8596±0.0086
But, as the Answer says, the table is NOT a presentation object and there's going to be nothing you can do useful with the result after having done other than look at it in the command window/on the screen.
Elysi Cochin
Elysi Cochin on 14 Oct 2022
Thank you so much Sir. Its just for display purpose. Thanks for the help.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 28 Aug 2018

Categories

Find more on Matrices and Arrays 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!