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

3 次查看(过去 30 天)
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 个评论
Mathieu NOE
Mathieu NOE 2024-1-31
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 2024-2-4
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.

请先登录,再进行评论。

采纳的回答

Voss
Voss 2024-1-31
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"

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by