我希望在不更改其他字词的情况下替换某些字词。
在此,我想更改sp
indet
而不更改其他字词,例如species
。
names <- c ('sp', 'sprucei', 'sp', 'species')
我已经尝试了gsub
但是当我运行它时输出不是我想要的
gsub (' sp', ' indet', names)
输出:
[1] "indet" "indetrucei" "indet" "indetecies"
而不是:
[1] "indet" "sptrucei" "indet" "sptecies"
有什么建议吗? 干杯!
答案 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'