How do I Remove Double Quotes from my Table?

56 Ansichten (letzte 30 Tage)
Mike Raymond
Mike Raymond am 28 Aug. 2018
Kommentiert: Csaba Noszaly am 4 Okt. 2024
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');
  1 Kommentar
Csaba Noszaly
Csaba Noszaly am 4 Okt. 2024
starting at 2021a, Matlab has formattedDisplayText, whose output can be adjusted as needed:
>> mtx=["1" "2"; "alma" "körte"];
>> t=formattedDisplayText(array2table(mtx))
t =
" mtx1 mtx2
______ _______
"1" "2"
"alma" "körte"
"
>> disp(replace(t, '"', " "))
mtx1 mtx2
______ _______
1 2
alma körte
>>

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

dpb
dpb am 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 Kommentare
dpb
dpb am 13 Okt. 2022
Bearbeitet: dpb am 13 Okt. 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 am 14 Okt. 2022
Thank you so much Sir. Its just for display purpose. Thanks for the help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 28 Aug. 2018

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by