使用apply来解析两个data.frames [R]

时间:2014-12-03 22:33:09

标签: 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 个答案:

答案 0 :(得分:1)

你想要

dataf[cbind(1:10, ind)]

当然,如果你真的想要对角线,你可以做到

diag(dataf)

但我假设您的ind值并非始终是连续的。