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

、私はc('a', 'i', 'k')であろう場所(1,1)mydf(3,2)、及び(5,2)の値を有するベクトルを返したいです。

+4

'mydf [CBIND(行のDIAG作品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の]))この

DIAGよう

音符のみマトリックス

関連する問題