2014-02-25 96 views
0

我有一个data.table(sbd_sbmolbio_n)。我需要找到2个条件为真行:R data.table有条件查找/替换

ORF_SEQUENCE包含“MKTIIALSYIFCLVFA”

N_TAG包含‘信号序列’

然后我需要更换N_TAG的‘信号序列’的一部分“ HA”,不过该字符串的其余部分,则(例如,‘信号序列,10XHis-TEV’变成了‘HA-10XHis-TEV’

我想这一点:

sbd_sbmolbio_n[grep("MKTIIALSYIFCLVFA",ORF_SEQUENCE),][grep("Signal Seq", N_TAG), N_TAG := sub("Signal Seq", "HA", N_TAG)] 

它正在查找行,但未进行替换。有什么想法吗?

回答

1

第一组括号返回data.table,这不是原来的data.table了,然后你正在修改那个。要做到这一点的地方 - 结合这两个条件(请注意使用的grepl代替grep):

sbd_sbmolbio_n[grepl("MKTIIALSYIFCLVFA",ORF_SEQUENCE) & grepl("Signal Seq", N_TAG), 
       N_TAG := sub("Signal Seq", "HA", N_TAG)] 
+0

我只使用grep代替grepl尝试这个。我现在看到为什么这个工作,那没有。这很简单,我想我盯着它太久了。谢谢! – James