【问题标题】:combine two named vectors with missing values in matrix将两个命名向量与矩阵中的缺失值相结合
【发布时间】:2013-04-18 17:41:12
【问题描述】:

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

【问题讨论】:

    标签: r matrix


    【解决方案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
    

    【讨论】:

    • 非常感谢。我知道rbind.fill,但不知道rbind.fill.matrix
    • @RossAhmed,我还添加了一个基本解决方案,以防您感兴趣。
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多