如何将函数应用于data.frame中的行对,类似于diff?

时间:2012-11-22 02:35:04

标签: r

我有一个表示平面中点的数据框。

     x     y
1  0.0   0.0
2  0.2   0.0
3  0.3  -0.1
...

我想为这些数据写一个类似diff的函数。我写了距离函数myDist(不是欧几里得),但是如何将它应用到数据框?

即:通过致电someFunction( myData, myDist ),我想获得一个值为myDist(myData[1,],myData[2,])myDist(myData[2,],myData[3,])myDist(myData[3,],myData[4,]),...

的向量

有没有这样做的功能,还是我必须写一个循环?

2 个答案:

答案 0 :(得分:2)

lapply

解决了这个问题
lapply(seq_len(nrow(myData) - 1),
    function(i){
        myDist( myData[i,], myData[i+1,] )
    })

答案 1 :(得分:0)

您可以使用head(myData, -1)tail(myData, -1)获取2个数据集,其行按照您想要的方式排列,然后如果myDist被矢量化,您只需将结果传递给{{1如果没有矢量化,您可以使用myDist(或mapply函数),Vectorizesapplylapply,循环或其他功能

apply