通过字符串搜索表格

4

我正在通过字符串搜索表格,但即使我100%确定它在那里,也找不到结果。运行 genelist 打印表格:

>> Untitled

genelist = 

    Prot_Family     Gene  
    ___________    _______

    'Prx'          'PRDX1'
    'Prx'          'PRDX2'
    'Prx'          'PRDX3'
    'Trx'          'TXN'  
    'Trx'          'TXN2' 

但是运行这个命令找不到字符串:find(strcmp('PRDX2',genelist(:,2)))

strcmp('PRDX2',genelist(:,2))返回0。

我做错了什么?


3
每当我看到代码截图或控制台输出时,我就想立即给它点个踩,但我会尽量克制自己,稍微等一下。请提供纯文本复制,这总是更好的选择! :) - Stewie Griffin
1
好的,对不起!:P 编辑中 - Sos
1个回答

4
这种情况发生的原因是,当你对一个表进行索引时,即使这些索引范围内的所有内容都是相同类型的,MATLAB也会返回另一个表格。包括genelist(1,1)将只返回一个带有单个值的表格。
这是因为表格不仅包含它们各个位置上的信息,还有列/行名称以及其他处理方式的信息。
因此,如果你想比较来自你知道是字符串的索引范围中的字符串,你需要将其转换为字符串。可以使用table2array
find(strcmp('PRDX2',table2array(genelist(:,2))))

3
这里有一个稍微简单的修复方法,可以使用 {} 进行索引。也就是尝试使用 find(strcmp('PRDX2',genelist{:,2}))。这种方法也不会产生任何深拷贝。 - CKT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接