在不满足 strsplit() 条件的向量中保留字符串
Retaining a character string in the vector that doesn't meet strsplit() criteria
我有不同的字符串,如下所示:
t <- c("probable linoleate 9S-lipoxygenase 5 [Malus domestica]", "PREDICTED: protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]")
我想从包含它的字符串中删除 'PREDICTED:'。
我的脚本如下所示:
t <- sapply(strsplit(t, split= ": ", fixed = TRUE), function(x) (x[2]))
但是,这是结果:
[1] 不适用 "protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]"
所以,不知为何,它擦除了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])
}
非常感谢任何帮助。
谢谢!
要删除 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]"
我有不同的字符串,如下所示:
t <- c("probable linoleate 9S-lipoxygenase 5 [Malus domestica]", "PREDICTED: protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]")
我想从包含它的字符串中删除 'PREDICTED:'。
我的脚本如下所示:
t <- sapply(strsplit(t, split= ": ", fixed = TRUE), function(x) (x[2]))
但是,这是结果: [1] 不适用 "protein STRUBBELIG-RECEPTOR FAMILY 3 [Malus domestica]"
所以,不知为何,它擦除了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])
}
非常感谢任何帮助。 谢谢!
要删除 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]"