我在 R 中有一个字符向量,并且想在字符向量的元素之间制作一个具有多个 NA 的新向量。 为简化起见,字符向量为:
cv <- c( "A", "B", "C" )
假设我们只需要 3 个 NA(实际上需要更多(。所需的输出向量为:
"A", NA, NA, NA, "B", NA, NA, NA, "C", NA, NA, NA
我猜以前有人问过这个问题,但很难搜索。 我尝试了 rep 和 rbind 的各种排列和组合,但没有成功。 要温柔;我的第一个问题:-(
使用sapply
将 c(NA, NA, NA( 连接到cv
的每个元素,以便对于cv
的每个元素,我们得到一个 4 向量。sapply
将它们排列成一个 4 x n 矩阵(其中 n 是cv
的长度(,左边的c
会将该矩阵分解成一个向量。
c(sapply(cv, c, rep(NA, 3)))
## [1] "A" NA NA NA "B" NA NA NA "C" NA NA NA
您可以尝试使用matrix()
和as.vector()
v <- as.vector(rbind(cv,matrix(nrow = 3,ncol = length(cv))))
这样
> v
[1] "A" NA NA NA "B" NA NA NA "C" NA NA
[12] NA
我们可以创建一个带有NA
的向量,并根据seq
生成的位置替换cv
元素。
n <- 3
vec <- rep(NA, (n + 1) * length(cv))
vec[seq(1, length(vec), n + 1)] <- cv
vec
#[1] "A" NA NA NA "B" NA NA NA "C" NA NA NA