Arrays 如何在R中通过索引从数组中提取多个值

Arrays 如何在R中通过索引从数组中提取多个值,arrays,r,matrix,subset,elements,Arrays,R,Matrix,Subset,Elements,我在数据帧列中有索引,我想基于这些索引提取数组元素,希望使用一个简单的子集函数 我有一个3D阵列(但适用于任意数量的维度) 例如: a<-array(1:27,dim = c(3,3,3)) 我想根据它们的索引提取多个元素。 假设我想要以表格/数据帧格式给出的示例元素(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)

我在数据帧列中有索引,我想基于这些索引提取数组元素,希望使用一个简单的子集函数

我有一个3D阵列(但适用于任意数量的维度) 例如:

a<-array(1:27,dim = c(3,3,3))
我想根据它们的索引提取多个元素。 假设我想要以表格/数据帧格式给出的示例元素(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
我希望(但没有运气)这个调用的输出类似于向量

c(a[1,2,3],a[2,2,3],a[3,1,1])
[1] 22 23  3
很明显,我可以循环浏览这些指数,但我觉得我遗漏了一些东西。。应该有更简单/更好的办法


我尝试了多种方法和搜索,但没有找到任何有效的方法,因此,如果已经有人回答了,我深表歉意。

你几乎是对的!您可以使用以下代码:

a<-array(1:27,dim = c(3,3,3))
coords <- cbind(rbind(c(1,2,3),c(2,2,3), c(3,1,1)))
colnames(coords) <- c("index1","index2","index3")
coords
a[coords]

a您可以从初始值转换为矩阵
a[as.matrix(coords)]
dataframe@akrun谢谢你的提示!总之,它必须是一个矩阵,而不是data.frame或list,对吗?:)谢谢你们两位!解决了我的问题!作为这个问题的扩展:如果coords矩阵包含每个维度的(dimname)索引字符串,而不是简单的整数索引,那么这种方法会起作用吗?还是需要使用整数matrix@user2829168我想应该是数字。您可以使用以下命令将chr矩阵转换为数值:
类(coords)
c(a[1,2,3],a[2,2,3],a[3,1,1])
[1] 22 23  3
a<-array(1:27,dim = c(3,3,3))
coords <- cbind(rbind(c(1,2,3),c(2,2,3), c(3,1,1)))
colnames(coords) <- c("index1","index2","index3")
coords
a[coords]