2013-06-26 35 views
0

我想通過一個「翻譯表」兩個因子變量AB結合結合兩個因素,像這樣:使用轉換表

#example factors: 
A <- factor(c("a","d","b"),levels=letters[1:6]) 
B <- factor(c("b","e","d"),levels=letters[1:5]) 

#translation table (columns correspond to A, rows to B): 
m <- structure(c(1L, 5L, 9L, 9L, 9L, 3L, 3L, 8L, 6L, 9L, 5L, 4L, 7L, 
       9L, 5L, 2L, 6L, 5L, 5L, 2L, 4L, 5L, 0L, 7L, 4L, 1L, 1L, 7L, 6L, 
       3L), .Dim = 5:6, .Dimnames = list(c("a", "b", "c", "d", "e"), 
                c("a", "b", "c", "d", "e", "f"))) 
# a b c d e f 
#a 1 3 5 2 4 1 
#b 5 3 4 6 5 1 
#c 9 8 7 5 0 7 
#d 9 6 9 5 7 6 
#e 9 9 5 2 4 3 

我想獲得C <- c(5, 2, 6)作爲結果的例子因素。

我的第一次嘗試是C <- m[A,B],但是這會導致其他問題(它不會通過成對的列表)。

回答

1

如果你的矩陣是m,和你的因素是AB

m[cbind(B, A)] 
+0

cbind也似乎超過兩個變量的工作,這是偉大的!謝謝。 – Thijs