为了获取包含特定字符串或搜索模式的行的索引(来自数据表),我使用:
rowID = find(data{:,{'ColumnA'}}==pattern(1));
有没有办法执行类似的操作,但有多个模式?例如在下表中:
Column A Column B
2 A
2 A
3 B
4 B
2 B
2 B
可以使用以下方法快速创建:
T = table();
T.Var1(1,1) = 2;
T.Var1(2,1) = 2;
T.Var1(3) = 3;
T.Var1(4) = 4;
T.Var1(5) = 2;
T.Var1(6) = 2;
T.Var2{1,1} = 'A';
T.Var2{2} = 'A';
T.Var2{3} = 'B';
T.Var2{4} = 'B';
T.Var2{5} = 'B';
T.Var2{6} = 'B';
我想提取行索引,其中ColumnA == 2和ColumnB ==' A'即[1 2]。
尝试双重索引时:
rowID = find(data{:,{'ColumnA'}}==2 & data{:,{'ColumnB'}}=='A');
尝试匹配字符串时出错:
Undefined operator '==' for input arguments of type 'cell'.
答案 0 :(得分:1)
由于示例中的Var1
是字符串的单元格数组,因此您可以使用strcmp
:
>> rowID = find(T{:,{'Var1'}}==2 & strcmp(T{:,{'Var2'}},'A')
rowID =
1
2