Clear Filters
Clear Filters

How to select non-string variables convertvars( ) argument?

3 views (last 30 days)
I want to convert non-string variables to string using convertvars. I can do convertvars(T, @isnumeric, 'string') and convertvars(T, @iscell, 'string'). When I want to convert all variables to string, that approach would be cumbersome. I have tried ~@isstring. That is of course a rediculous and wrong idea. Is there a way to select non-string variables from a table?
c = {1,2,3;'a','b','c'; "d", "e", "f"}'
c = 3×3 cell array
{[1]} {'a'} {["d"]} {[2]} {'b'} {["e"]} {[3]} {'c'} {["f"]}
t = cell2table(c)
t = 3×3 table
c1 c2 c3 __ _____ ___ 1 {'a'} "d" 2 {'b'} "e" 3 {'c'} "f"
convertvars(t, @isnumeric, 'string') % convert one column at a time
ans = 3×3 table
c1 c2 c3 ___ _____ ___ "1" {'a'} "d" "2" {'b'} "e" "3" {'c'} "f"
convertvars(t, 1:width(t), 'string') % works but I like to see a better solution
ans = 3×3 table
c1 c2 c3 ___ ___ ___ "1" "a" "d" "2" "b" "e" "3" "c" "f"
  2 Comments
Mathieu NOE
Mathieu NOE on 31 Jan 2024
why is
convertvars(t, 1:width(t), 'string') % works but I like to see a better solution
not a good solution in your eyes ?
Simon
Simon on 4 Feb 2024
load patients.mat
t=table(Age, Location, LastName, Gender, Height);
This solution is slower because it converts string to string reduntly.
tic
convertvars(t, 1:width(t), 'string');
toc
Elapsed time is 0.016945 seconds.
Much faster solution
tic
convertvars(t, @(x)~isstring(x), 'string');
toc
Elapsed time is 0.004329 seconds.

Sign in to comment.

Accepted Answer

Voss
Voss on 31 Jan 2024
c = {1,2,3;'a','b','c'; "d", "e", "f"}'
c = 3×3 cell array
{[1]} {'a'} {["d"]} {[2]} {'b'} {["e"]} {[3]} {'c'} {["f"]}
t = cell2table(c)
t = 3×3 table
c1 c2 c3 __ _____ ___ 1 {'a'} "d" 2 {'b'} "e" 3 {'c'} "f"
convertvars(t, @(x)~isstring(x), 'string')
ans = 3×3 table
c1 c2 c3 ___ ___ ___ "1" "a" "d" "2" "b" "e" "3" "c" "f"

More Answers (0)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!