r语言 - 如果需要,使用 NA 将元素插入矢量



让我们想象向量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

最新更新