我有向量v1 = c(a, b, c, d, e, f)
,另一方面有向量v2 = c(1,2,3,4)
。
我的要求:
我想在位置1之后将向量v2
插入到向量v1
中,v2
的每个值都覆盖v1
的值,最后得到向量v3 = c(a,1,2,3,4,f)
我该如何管理它?提前谢谢。
答案 0 :(得分:4)
我们可以根据职位进行分配
v1[2:(length(v1)-1)] <- v2
v1
#[1] "a" "1" "2" "3" "4" "f"
或者通过创建函数
,可以基于长度'v2'进行赋值fnInsert <- function(vec1, vec2, ind){
stopifnot(length(vec1) > length(vec2))
i1 <- seq(ind, length.out = length(vec2), by = 1)
replace(vec1, i1, vec2)
}
fnInsert(v1, v2, 2)
#[1] "a" "1" "2" "3" "4" "f"
fnInsert(v1, v2, 3)
#[1] "a" "b" "1" "2" "3" "4"
对于v2的长度大于v1的边缘情况进行一些额外的检查可能会更好
fnInsert(v1, 1:8, 2)
错误:长度(vec1)&gt;长度(vec2)不为TRUE
v1 <- letters[1:6]
v2 <- c(1,2,3,4)