让我们想象向量c(2,3)
。我想添加到这个矢量数字4,但在第四位(所以第三个应该是空的,用NA填充(
我们可以简单地使用append(c(2,3),4,after=3)
将数字加到向量上。但我们最终会得到向量c(2,3,4)
而不是c(2,3,NA,4)
。我知道这是意料之中的事,因为追加函数就是这样工作的,但有什么简单的方法可以解决这个问题吗?
您可以使用此函数:
append_at_k <- function(vec, k, value) {
vec[k] <- value
vec
}
append_at_k(c(2,3), 4, 4)
#[1] 2 3 NA 4
您可以使用与append相同的签名编写自己的函数,例如:
myAppend <- function(x,values,after=length(x)) {
if(after < length(x)) stop("after must be at least length(x)")
c(x,rep(NA,after-length(x)),values)
}
这行吗:
insert_num <- function(vec, num, pos){
if(pos == (length(vec)+1)) {vec[pos] = num}
else{
vec[(length(vec)+1):(pos-1)] = NA
vec[pos] = num
}
vec
}
v
[1] 2 3
insert_num(v,4,3)
[1] 2 3 4
insert_num(v,4,5)
[1] 2 3 NA NA 4
我们可以使用replace
append_at_k <- function(vec, k, value) {
replace(vec, k, value)
}
append_at_k(c(2,3), 4, 4)
#[1] 2 3 NA 4