r - 在 R 中使用矩阵作为查找表

标签 r matrix

假设我有一个矩阵:

> mat1
  A B
A 1 3
B 2 4

还有一个数据框:

> df
  First Second
1    A    A
2    A    B
3    B    A
4    B    B

如何查找 First 的值和Second在矩阵中?

在这种情况下我想要的输出是:

> df
  First Second result
1    A    A      1
2    A    B      3
3    B    A      2
4    B    B      4

我发现我可以做 df <- cbind(df, result = diag(mat1[df$First, df$Second]))但有没有办法在没有 diag() 的情况下做到这一点? ?我想如果我有一个很长的数据框,那么 mat1[df$First, df$Second]如果生成较大的矩阵,会使代码运行速度变慢。

最佳答案

替代方案:

df$result <- mat1[as.matrix(df)]
df
#   First Second result
# 1     A      A      1
# 2     A      B      3
# 3     B      A      2
# 4     B      B      4

如果 df 有更多列,您需要显式地对它们进行子集化,如下所示

mat1[as.matrix(df[c("First","Second")])]
# [1] 1 3 2 4

关于r - 在 R 中使用矩阵作为查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69396268/

相关文章:

r - 如何在 R Shiny 中添加消息框?

r - 使用颜色图例将总计或平均值添加到 ggplot

c++ - 矩阵和 vector 乘法,输出不正确的乘积

c++ - std::transform 比 for 循环慢

r - Mac OS X R 错误 "ld: warning: directory not found for option"

删除少于 "x"行的列表元素

r - 将多个字符串拆分为 R 矩阵中的多列

c++ - 如何输入矩阵样式的 txt 文件而不是为 C++ 定义我自己的 int 二维数组

arrays - 如何总是做一个做作的副本?

python - Sklearn 聚类相似订单