我有数据框中的索引,希望能够根据这些索引提取数组元素,可以使用简单的子集函数吗?
我有一个三维数组(但适用于任何维数) 例如:
a<-array(1:27,dim = c(3,3,3))
我可以提取单个元素。
a[1,2,3]
[1] 22
我希望能够根据它们的索引提取多个元素。例如,假设我想要提取元素 (1,2,3)=22,(2,2,3)=23 和 (3,1,1)=3,这些元素以表格/数据框的形式给出:
coords <- as.data.frame(rbind(c(1,2,3),c(2,2,3), c(3,1,1)))
colnames(coords) <- c("index1","index2","index3")
coords
index1 index2 index3
1 1 2 3
2 2 2 3
3 3 1 1
对于一个电话(无法使用)
a[coords$index1,coords$index2,coords$index3]
我希望这个调用的输出结果类似于一个向量,但是没那么幸运。
c(a[1,2,3],a[2,2,3],a[3,1,1])
[1] 22 23 3
我显然可以循环这些索引,但我觉得有些东西我可能错过了..应该有更简单/更好的方法。 我尝试了多种方法和搜索,但我还没有找到任何有效的方法,所以如果这个问题已经有答案了,请谅解。
a[as.matrix(coords)]
。 - akrunclass(coords) <- "numeric"
。 - tk3