给定一个向量u
元素和矢量i
指数到载体x
,我们如何可以插入的元素u
到x
对应于指数的元素后i
,无需重复?
例如
x <- c('a','b','c','d','e')
u <- c('X','X')
i <- c(2,3)
# now we want to get c('a','b','X','c','X','d','e')
Run Code Online (Sandbox Code Playgroud)
我想一步完成这个(即避免循环),因为每个步骤都需要创建一个新的向量,实际上这些是长向量.
我希望有一些索引魔法.
我认为这应该有效,只要i
不包含重复索引.
idx <- sort(c(seq_along(x), i))
y <- x[idx]
y[duplicated(idx)] <- u
y
#[1] "a" "b" "X" "c" "X" "d" "e"
Run Code Online (Sandbox Code Playgroud)
编辑
正如@MartinMorgan在评论中建议的那样,更好的方法是这样做
c(x, u)[order(c(seq_along(x), i))]
.