1

我有一个命名向量 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 组合成一个矩阵。请问有什么建议吗?

4

1 回答 1

1

rbind.fill.matrix从“plyr”包中尝试:

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
于 2013-04-18T17:49:34.690 回答