替换R中的文本而不更改其他单词

时间:2014-09-25 17:32:47

标签: r replace gsub

我希望在不更改其他字词的情况下替换某些字词。 在此,我想更改sp indet而不更改其他字词,例如species

names <- c ('sp', 'sprucei', 'sp', 'species')

我已经尝试了gsub但是当我运行它时输出不是我想要的

gsub (' sp', ' indet', names)

输出:

[1] "indet" "indetrucei" "indet" "indetecies"

而不是:

[1] "indet" "sptrucei" "indet" "sptecies"

有什么建议吗? 干杯!

2 个答案:

答案 0 :(得分:6)

尝试

names <- c ('sp', 'sprucei', 'sp', 'species')
gsub('^sp$', 'indet', names)
# [1] "indet"   "sprucei" "indet"   "species"

^要求匹配从字符串的开头开始,$要求它在字符串的结尾处结束。

如果您在sp之前/之后有其他字词,则可以使用\b来匹配字边界

names <- c ('sp', 'sprucei', 'apple sp banana', 'species')
gsub('\\bsp\\b', 'indet', names)
# [1] "indet"       "sprucei"       "apple indet banana"     "species"

答案 1 :(得分:1)

另一个选择,就是你的例子:

names <- c ('sp', 'sprucei', 'sp', 'species')
names[names=='sp'] <- 'indet'
names
# [1] "indet"   "sprucei" "indet"   "species"

与MrFlick的解决方案不同,如果在'sp'

之前或之后有空格或单词,这将无法奏效