2014-12-03 61 views
0

我正在尋找一種簡單的方法來矢量化一個操作,該操作採用矢量的順序值,並將其用作給定列的索引。例如:使用apply解析兩個data.frames [R]

dataf <- replicate(10, sample(0:100,10,rep=TRUE)) 

> dataf 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 11 70 31 46 55 7 87 12 93 16 
[2,] 62 55 30 26 65 31 4 90 47 90 
[3,] 61 28 16 30 31 72 32 1 14 13 
[4,] 62 93 4 51 62 50 1 79 54 13 
[5,] 86 29 22 18 33 15 24 9 19 10 
[6,] 64 84 81 76 50 50 71 52 90 51 
[7,] 0 28 53 20 68 49 31 38 39 30 
[8,] 23 26 92 26 48 75 51 7 31  2 
[9,] 67 18 83 100 24 17 5 32 16 31 
[10,] 51 23 4 81 77 85 57 67 90 74 


ind <- c(1:10) 

使用「IND」作爲列索引的每一行,我想要做的是執行類似這樣的操作:

dataf[1, ind[1]] 
dataf[2, ind[2]] 
... 
dataf[10, ind[10]] 

我期待的結果是一個單一的載體:

> result 
[1] 11 55 16 51 33 50 31 7 16 74 

我希望避免使用循環 - 有沒有什麼辦法可以實現這個使用矢量化的方法?

謝謝 AG

回答

1

你想

dataf[cbind(1:10, ind)] 
當然

,如果你真的只是想對角線,你可以做

diag(dataf) 

但我假設你ind值並不總是順序的。

+0

謝謝 - 運作良好! – dreww2 2014-12-03 22:51:26