【发布时间】:2019-04-05 17:34:30
【问题描述】:
我试图通过使用一个函数来获取动物行进的总距离,该函数使用经纬度位置的差异来输出行进的距离。嵌套循环有一些问题。
函数 ComputeDistance 以 Lat1、Lat2、Long1、Long 2 的顺序获取参数。 DistTest 的第 5 列包含纬度值,第 6 列包含经度值。
因此,对于“输出”对象,我试图获得通过所有 38 行的连续距离。
例如
ComputeDistance(DistTest[1,5],DistTest[2,5],DistTest[1,6],DistTest[2,6]
其次是:
ComputeDistance(DistTest[2,5],DistTest[3,5],DistTest[2,6],DistTest[3,6]
其次是:
ComputeDistance(DistTest[3,5],DistTest[4,5],DistTest[3,6],DistTest[4,6]
……
ComputeDistance(DistTest[37,5],DistTest[38,5],DistTest[37,6],DistTest[38,6]
我认为问题在于循环正在遍历 DL 和 EL 的所有可能组合,而不仅仅是按顺序进行。
下面是我目前正在使用的代码。
## rows 1-37 and rows 2-38
DL <- 1:37
EL <- 2:38
## subsetting for one tagged animal
DistTest <- subset(Dispsum, Tag.ID == 1658)
## creating blank objects to save output in
testid <- c()
testdistance <- c()
for( j in DL){
for( k in EL){
output <- (ComputeDistance(DistTest[j,5], DistTest[k,5],DistTest[j,6], DistTest[k,6]))
Name <- 1658
testid <- rbind(testid, Name)
testdistance <- rbind(testdistance,output)
}
}
【问题讨论】:
-
你不需要循环。你可以序列化它