用多个元素替换向量中的一个元素

use*_*199 9 replace r gsub

我有一个向量,我想用多个元素替换一个元素,我可以用一个而不是多个替换,任何人都可以帮忙吗?

比如我有

data <- c('a', 'x', 'd')
> data
[1] "a" "x" "d"
Run Code Online (Sandbox Code Playgroud)

我想,以取代"x""b", "c"获得

[1] "a" "b" "c" "d"
Run Code Online (Sandbox Code Playgroud)

然而

gsub('x', c('b', 'c'), data)
Run Code Online (Sandbox Code Playgroud)

给我

[1] "a" "b" "d"
Warning message:
In gsub("x", c("b", "c"), data) :
  argument 'replacement' has length > 1 and only the first element will 
be used
Run Code Online (Sandbox Code Playgroud)

tal*_*lat 5

这是我要解决的方法:

data <- c('a', 'x', 'd')
lst <- as.list(data)
unlist(lapply(lst, function(x) if(x == "x") c("b", "c") else x))
# [1] "a" "b" "c" "d"
Run Code Online (Sandbox Code Playgroud)

我们利用了事实,即列表结构比原子向量更灵活。我们可以将length-1的list-element替换为length> 1的元素,然后取消列出结果以返回到原子向量。

由于您要替换“ x”的完全匹配项,因此在这种情况下,我不想使用sub/ gsub