2013-04-18 47 views
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组合成一个矩阵时遇到了麻烦。有什么建议吗?

回答

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 
+0

十分感谢。我知道'rbind.fill',但不是'rbind.fill.matrix' – luciano

+0

@RossAhmed,我还添加了一个基础解决方案,以防您感兴趣。 – A5C1D2H2I1M1N2O1R2T1