Finding Cell Records in a MATLAB Table

I have a Matlab table (new class "Table"), call it A

:

A=table([1;2;3],{'A';'B';'C'})

      

As you can see, some of the columns are double, some are cells.

I am trying to figure out which ones are cells.

For some reason there is no A.Properties.class

one I can use and I cannot name iscell

on it.

What's the "Matlab" way to do this? Do I need to iterate over each column of the table to figure out its class?

+3


source to share


2 answers


One approach -

out = cellfun(@(x) iscell(getfield(A,x)),A.Properties.VariableNames)

      

Or a better way would be to access the fields (variables) dynamically in the same way -

out = cellfun(@(x) iscell(A.(x)), A.Properties.VariableNames)

      

Examples of run:

Launch # 1 -



A=table([1;2;3],{4;5;6})
A = 
    Var1    Var2
    ____    ____
    1       [4] 
    2       [5] 
    3       [6] 
out =
     0     1

      

Startup No. 2 -

>> A=table([1;2;3],{'A';'B';'C'})
A = 
    Var1    Var2
    ____    ____
    1       'A' 
    2       'B' 
    3       'C' 
out =
     0     1

      

Launch # 3 -

>> A=table([1;2;3],{4;5;6},{[99];'a';'b'},{'m';'n';'p'})
A = 
    Var1    Var2    Var3    Var4
    ____    ____    ____    ____
    1       [4]     [99]    'm' 
    2       [5]     'a'     'n' 
    3       [6]     'b'     'p' 
>> out
out =
     0     1     1     1

      

+3


source


You can check with iscell(A.Var2)

if the second variable is of type cell. More generally, you can refer to columns by their index:



for k = 1 : width(A)
    disp(iscell(A.(k)))
end

      

0


source







All Articles