Cod*_*lus 4 r vector matrix rbind
说我有两个向量v1和v2和,我想打电话rbind(v1, v2).但是,假设length(v1)> length(v2).从文档中我已经读过,较短的向量将被回收.以下是此"回收"的示例:
> v1 <- c(1, 2, 3, 4, 8, 5, 3, 11)
> v2 <- c(9, 5, 2)
> rbind(v1, v2)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
v1 1 2 3 4 8 5 3 11
v2 9 5 2 9 5 2 9 5
Run Code Online (Sandbox Code Playgroud)
v2被回收,而是将其余的条目设为0?非常感谢所有帮助!
Ric*_*rta 16
使用以下内容:
rbind(v1, v2=v2[seq(v1)])
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
v1 1 2 3 4 8 5 3 11
v2 9 5 2 NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
工作原理:将矢量索引大于其长度的值会在该索引点返回NA值.
#eg:
{1:3}[c(3,5,1)]
#[1] 3 NA 1
Run Code Online (Sandbox Code Playgroud)
因此,如果您通过较长的一个的凹陷来索引较短的一个,您将获得较短的一个加上一系列的所有值NA.
概括:
v <- list(v1, v2)
n <- max(sapply(v, length))
do.call(rbind, lapply(v, `[`, seq_len(n)))
Run Code Online (Sandbox Code Playgroud)