R 基于列表中的元素对数据帧进行子集

R 基于列表中的元素对数据帧进行子集,r,dataframe,R,Dataframe,这似乎是一件简单的事情,我想知道最有效的方法是什么。假设我有一个数据帧“data”,另一个帧有我想要提取的索引 data<-as.data.frame(matrix(1:9,3,3)) idx<-cbind(c(1,3,2),c(2,3,1)) 我试图在单独的列表或向量中获取元素列表 试试看: data[ cbind( idx[,1],idx[,2]) ] R可以使用矩阵索引-data[idx]请参见?`[`-“当通过'['对数组进行索引时,单个参数'i'可以是一个矩阵,其列数

这似乎是一件简单的事情,我想知道最有效的方法是什么。假设我有一个数据帧“data”,另一个帧有我想要提取的索引

data<-as.data.frame(matrix(1:9,3,3))
idx<-cbind(c(1,3,2),c(2,3,1))
我试图在单独的列表或向量中获取元素列表

试试看:

 data[ cbind( idx[,1],idx[,2]) ]

R可以使用矩阵索引-
data[idx]
请参见
?`[`
-“当通过'['对数组进行索引时,单个参数'i'可以是一个矩阵,其列数与'x'的维数相同;结果是一个向量,其元素对应于'i'每行中的索引集。”这是我尝试的第一件事。实际上,我已经从文件.data和idx中读取了两个数据帧。当我尝试数据[idx]时,我得到了以下错误:在
[.default
(data,idx)中出错:无效的下标类型“idx”,然后尝试
数据[as.matrix(idx)]
可能值得注意的是,使用矩阵索引将数据强制到matrix@nongkrong-我不确定这是不是一个问题-如果它要作为向量输出,它必须是定义相同的类。
 data[ cbind( idx[,1],idx[,2]) ]