我有一个Matlab表格(新的“Table”类),我们称之为A
:
A=table([1;2;3],{'A';'B';'C'})
正如你所见,有些列是双倍的,有些是单元格。
我正在试图找出哪些是单元格。
由于某种原因,我无法使用 A.Properties.class
,并且似乎无法调用 iscell
。
这个问题在"Matlab"中应该怎么解决?难道我必须循环遍历表的每一列以确定其类别吗?
我有一个Matlab表格(新的“Table”类),我们称之为A
:
A=table([1;2;3],{'A';'B';'C'})
正如你所见,有些列是双倍的,有些是单元格。
我正在试图找出哪些是单元格。
由于某种原因,我无法使用 A.Properties.class
,并且似乎无法调用 iscell
。
这个问题在"Matlab"中应该怎么解决?难道我必须循环遍历表的每一列以确定其类别吗?
一种方法:
out = cellfun(@(x) iscell(getfield(A,x)),A.Properties.VariableNames)
或者,更好的方法是像这样动态访问字段(变量)-
out = cellfun(@(x) iscell(A.(x)), A.Properties.VariableNames)
A=table([1;2;3],{4;5;6})
A =
Var1 Var2
____ ____
1 [4]
2 [5]
3 [6]
out =
0 1
>> A=table([1;2;3],{'A';'B';'C'})
A =
Var1 Var2
____ ____
1 'A'
2 'B'
3 'C'
out =
0 1
>> 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
您可以使用iscell(A.Var2)
测试第二个变量是否为单元格类型。更一般地,您可以通过它们的索引引用列:
for k = 1 : width(A)
disp(iscell(A.(k)))
end