从 R 中的原始数据帧中找到子集数据帧的索引

Find the index of subset data frame from its original data frame in R

我在 R 中有一个数据框,这里说 a1 作为玩具示例,我有一个来自它的行子集,比如 a2。 我想找到原始子集索引(2,4)。

我尝试了 whichmatch,但没有成功。

 set.seed(123)
 a1=data.frame(x1=rnorm(5),x2=runif(5),x3=runif(5))
 a2=a1[c(2,4),]
 a2index=rep(NA,dim(a2)[1])

这是我的a1data.frame

    a1
           x1        x2         x3
1 -0.56047565 0.9568333 0.89982497
2 -0.23017749 0.4533342 0.24608773
3  1.55870831 0.6775706 0.04205953
4  0.07050839 0.5726334 0.32792072
5  0.12928774 0.1029247 0.95450365

a2 是 a1 的行子集:

 a2
           x1        x2        x3
2 -0.23017749 0.4533342 0.2460877
4  0.07050839 0.5726334 0.3279207

我设法使用双循环获得了索引。但是太慢了,有什么办法可以加快速度吗?

感谢您的帮助。

for (i in 1:dim(a2)[1] )
   for (j in 1:dim(a1)[1])
     if (all(a2[i,]==a1[j,])){
       a2index[i]=j
       break;
       } 

# return the index vector (2,4) 
a2index``

你可以在转置你的数据帧后使用match,这样它就可以column-wise进行比较。

match(as.data.frame(t(a2)), as.data.frame(t(a1)))
[1] 2 4