2013-04-18 50 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