2017-09-06 28 views
0

我的问题很简单,我认为R中有一个解决方案,但我无法在任何地方找到它。实施例下面:通过2个向量的行和列坐标索引一个数据帧

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),这将是c('a', 'i', 'k')

+4

'是myDF [cbind(行, COLS)]' –

回答

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()过的结果。

0

一个简单的方法是这样的

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

注意到诊断仅对于矩阵

相关问题