我有一个名为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组合成矩阵。有什么建议吗?
答案 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