在矩阵中组合两个具有缺失值的命名向量

时间:2013-04-18 17:41:13

标签: r matrix

我有一个名为vector x:

  x <- seq(10, 80, 10)
names(x) <- month.abb[1:8]

...和一个命名的矢量y:

  y <- seq(10, 110, 10)
names(y) <- month.abb[2:12]

我需要在矩阵中组合x和y。对于x或y中缺少的月份,值应为0(不是NA)。这是我需要的矩阵:

xy <- matrix(c(c(seq(10, 80, 10), 0, 0, 0, 0), c(0, seq(10, 110, 10))), nrow = 2, ncol = 12, byrow = TRUE,
             dimnames = list(c("x", "y"),
                             month.abb)) 

我无法以编程方式将x和y组合成矩阵。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

从“plyr”套餐中试用rbind.fill.matrix

library(plyr)
temp <- rbind.fill.matrix(t(x), t(y))
temp[is.na(temp)] <- 0
temp
#      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# [1,]  10  20  30  40  50  60  70  80   0   0   0   0
# [2,]   0  10  20  30  40  50  60  70  80  90 100 110

坚持使用基础R,也可以使用以下内容:

A <- matrix(0, ncol = 12)
colnames(A) <- month.abb
temp <- list(x, y)
do.call(rbind, 
        lapply(seq_along(list(x, y)), function(z) {
          A[, names(temp[[z]])] <- temp[[z]]
          A
        }))
#      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# [1,]  10  20  30  40  50  60  70  80   0   0   0   0
# [2,]   0  10  20  30  40  50  60  70  80  90 100 110
相关问题