如何使用row.name和col.name的几个子集矩阵

时间:2013-09-26 20:24:21

标签: r

我有一个简单的问题。我有一个带有两列字符变量的数据框,对应于来自单独矩阵的行和列名称“couple”。我只是想用这些夫妇在矩阵中查找值,并在向量中返回。

我确信这是微不足道的,但是我在一个多小时的谷歌搜索中找不到答案。这是一个可重复的例子:

m <- as.matrix(data.frame(a=c(1,2,3,4), 
                          b=c(14,15,16,17), 
                          c=c(27,28,29,30), 
                          d=c(43,44,45,46)))
row.names(m) <- c('w','x','y','z')

df <- data.frame(j=c('x','z','z','w','x'),
                 k=c('a','b','d','d','c'))

#I just want to "lookup" a vector of values equal to c(2,17,46,43,28)
result <- sapply(df, function(x) m[x[1],x[2]])

result
j.c k.b 
28  14

有人可以帮我解决这个问题吗? sapply可能不是最好的方法,我对其他想法持开放态度。

1 个答案:

答案 0 :(得分:3)

只是强迫data.frame成为matrix并将其用作索引

> m[as.matrix(df)]
[1]  2 17 46 43 28

看看this document,了解其原因。