通过2个行和列坐标向量索引数据帧

时间:2017-09-06 01:34:26

标签: r dataframe

我的问题很简单,我认为R中有一个解决方案,但我无法在任何地方找到它。示例如下:

mydf = data.frame(a = letters[1:6], 
                  b = letters[7:12], 
                  c = letters[13:18])

rows = c(1,3,5)
cols = c(1,2,2)

使用上面的数据,我想在位置mydf(1,1)(3,2)中返回值(5,2)的向量,它将是{{ 1}}。

2 个答案:

答案 0 :(得分:0)

嗯,不是很优雅,但你可以使用sapply,定义一个匿名函数:

sapply(1:length(rows), function(z){mydf[rows[z], cols[z]]})

与更可读但效率更低的循环相同的结果:

result <- NULL
for(counter in 1:length(rows){
result <- c(result, mydf[rows[counter], cols[counter]]
 }

同时确保您的col类不是因素,否则它将返回一个因子。在您的示例中,您可以添加。

..., stringsAsFactors = F)

或者对结果使用as.vector()

答案 1 :(得分:0)

一个简单的方法就是这样

DIAG(as.matrix(是myDF [行,COLS]))

请注意,diag仅适用于矩阵