我的问题很简单,我认为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}}。
答案 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仅适用于矩阵