gpt4 book ai didi

r - 如何使用 row.name 和 col.name 对矩阵进行子集化

转载 作者:行者123 更新时间:2023-12-03 09:26:51 25 4
gpt4 key购买 nike

我有一个简单的问题。我有一个包含两列字符变量的数据框,对应于来自单独矩阵的行和列名称“耦合”。我只想使用这些对来查找矩阵中的值,并以向量返回。

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

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 可能不是最好的方法,我对其他想法持开放态度。

最佳答案

只需将data.frame强制为矩阵并将其用作索引

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

看看this document了解为什么这有效。

关于r - 如何使用 row.name 和 col.name 对矩阵进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com