给定矩阵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?
由于
答案 0 :(得分:1)
好的,好像你真的只想要
D2 <- A[cbind(df$INTr, df$INTc)]
(无需创建D1
)。请注意,使用这样的矩阵进行索引可以为每行指定不同的列。