索引陣列讓我們假設我有dim(x) <- c(3,3,3)
陣列。我也有一個df或矩陣與兩個**列包含我需要的索引組合。的R - 使用陣列
當我通過x[df[[1]],df[[2]],]
我得到一個非常大的數組,然後我需要去通過,並採取對角線使用應用功能。這是非常記憶和時間低效的。是否有某種快捷方式(不使用for
循環)來索引數組,以便返回df
要求的值的向量。
簡單的例子:
`a <- array(1:27,dim = c(3,3,3))
df <- data.frame(c(1,2,2,1,3,2),c(2,3,2,1,3,2))`
在這個例子中,我想要通過類似「a[df[[1]],df[[2]],]
」 並得到這樣的事情(或調換):
. [,1] [,2] [,3] [,4] [,5] [,6] [1,] 4 8 5 1 9 5 [2,] 13 17 14 10 18 14 [3,] 22 26 23 19 27 23
當我傳遞函數現在,我得到一個dim = c(6,6,3)
的三維數組,作爲更有幫助的dim = c(6,3)
。我可以輕鬆地apply(result, 3,diag)
得到我想要的東西,但是當DF >> 6它佔用了大量的空間(如空間750GB,並引發警告,錯誤和停止開始前執行)
'x = 1:27; dim(x)< - c(3,3,3); X [cbind(1,2,3)]'你可以看到更多的關於這方面'Extract' – Frank
請閱讀'幫助(「[」)':「索引的第三種形式是通過與一列的數字矩陣對於每個維度:索引矩陣的每一行隨後選擇所述陣列的單個元件,其結果是一個矢量」 – Roland
密切相關:http://stackoverflow.com/q/10865337/ – Frank