2013-06-26 101 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