2017-09-06 40 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]))

注意到診斷僅對於矩陣

相關問題