簡體   English   中英

如何使用row.name和col.name的幾個子集矩陣

[英]How to subset matrix with couples of row.name and col.name

我有一個簡單的問題。 我有一個帶有兩列字符變量的數據框,對應於來自單獨矩陣的行和列名稱“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可能不是最好的方法,我對其他想法sapply開放態度。

只需將data.frame強制為matrix並將其用作索引

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

看看這個文檔 ,了解為什么會這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM