通过独特的价值R来提供

时间:2016-06-20 21:47:31

标签: r

我正在构建一个函数(第一次)。我试图用earth.dist计算每个动物月份2点之间的最远距离。我一直在摆弄这些代码大约4个小时,并且无法弄清楚为什么我每个动物月都得到相同的值(我在单个动物月测试它并且它工作得很好)。希望有人可以指出我在每个动物月应用功能方面的正确方向。感谢。

基本上有3列,动物月(与月份连接的独特动物ID),纬度和长度。

maxdist<- function(latlong, latlongt,a2,dt,farth)
{

latlong<-movementfile[c(18,17)] #cols indicating long/lat

latlongt<-data.table(latlong)

a2<-earth.dist(latlongt, FALSE)

dt<-as.data.frame(as.table(a2))

farth<-max(dt$Freq)
}

lapply(unique(movementfile$animal_month),maxdist)

1 个答案:

答案 0 :(得分:0)

这个怎么样:

maxdist<- function(anim_m) 
{
  latlong<-movementfile[movementfile$animal_month==anim_m,c(1,2)] #cols indicating long/lat

  latlongt<-data.table(latlong)

  a2<-earth.dist(latlongt, FALSE)

  dt<-as.data.frame(as.table(a2))

  farth<-max(dt$Freq)
}

#use some data
data(fdata.lats)
movementfile=data.frame(fdata.lats)
movementfile$animal_month=paste(LETTERS[1:(dim(movementfile)[2])],1:(dim(movementfile)[2]),sep="")
movementfile

> movementfile
     longitude latitude animal_month
locA      -109       47           A1
locB      -108       39           B2
locC      -100       44           A1
locD      -117       39           B2
locE       -99       36           A1
locF      -109       43           B2
locG      -113       44           A1
locH      -110       33           B2
locI       -94       40           A1
locJ       -90       45           B2
locK       -94       46           A1
locL      -116       41           B2

lapply(unique(movementfile$animal_month),maxdist)

> unique(movementfile$animal_month)
[1] "A1" "B2"
> lapply(unique(movementfile$animal_month),maxdist)
[[1]]
[1] 1628.118

[[2]]
[1] 2317.066