我有一个表示平面中点的数据框。
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,])
,...
有没有这样做的功能,还是我必须写一个循环?
答案 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
函数),Vectorize
,sapply
,lapply
,循环或其他功能
apply