我正在构建一个函数(第一次)。我试图用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)
答案 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