我有不同的字符串,如下所示:
t <- c("probable linoleate 9S-lipoxygenase 5 [Malus domestica]", "PREDICTED: protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]")
我想删除&#39;预测:&#39;来自包含它的字符串。
我的脚本如下所示:
t <- sapply(strsplit(t, split= ": ", fixed = TRUE), function(x) (x[2]))
但是,这是结果: [1] NA&#34;蛋白质STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]&#34;
因此,由于某种原因,它删除了t [1],并在t [2]上正确执行了操作。我尝试将grep()添加到我的字符串中:
t <- sapply(strsplit(t, if(grep('^*.', t), split= ": " else t, fixed = TRUE), function(x) (x[2]))).
我也试过写一个循环:
for(i in t){
if(i == grep('PREDICTED', t[i]) split= ": " else t[i])
}
非常感谢任何帮助。 谢谢!
答案 0 :(得分:1)
要删除PREDICTED:
字词,您可以使用简单的非正则表达式sub
:
t <- c("probable linoleate 9S-lipoxygenase 5 [Malus domestica]", "PREDICTED: protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]")
sub("PREDICTED: ", "", t, fixed=TRUE)
如果第一个冒号之前的单词可以是任何单词,请使用正则表达式解决方案:
t <- c("probable linoleate 9S-lipoxygenase 5 [Malus domestica]", "PREDICTED: protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]")
sub("^[^:]*:\\s*", "", t)
见another demo。在这里,^[^:]*:\\s*
匹配字符串开头以外的:
以外的0 +字符,然后是:
,然后匹配0+空格(自sub
起使用时仅匹配一次,而不是gsub
。
在这两种情况下,输出都是相同的:
[1] "probable linoleate 9S-lipoxygenase 5 [Malus domestica]"
[2] "protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]"