评估矩阵R中的对角元素

时间:2014-07-28 16:37:49

标签: r

给定矩阵A

A <- matrix(1:8, nrow=2)

A

[,1] [,2] [,3] [,4]
[1,]    1    3    5    7
[2,]    2    4    6    8

我有一个表示不同坐标的数据框

df <- data.frame(
   INTr = c(2,2,1,2),
   INTc = c(1,3,4,2)
)

我必须为每对(INTc,INTr)评估矩阵A,即

A[2,1]
A[2,3]  
A[1,4]  
A[2,2]  

到目前为止,这是我的代码

D1 <- A[df$INTr, df$INTc]    # Evaluate A for all the combinations
D2 <- diag(D1)         # Keep only diagonal elements

为大矩阵计算D1非常耗费内存并导致R崩溃。有没有办法在不计算D1的情况下获得D2?

由于

1 个答案:

答案 0 :(得分:1)

好的,好像你真的只想要

D2 <- A[cbind(df$INTr, df$INTc)]

(无需创建D1)。请注意,使用这样的矩阵进行索引可以为每行指定不同的列。