我读了很多关于sapply和嵌套循环的帖子。所有帖子都解决了像
这样的情况for(i in 1:10){
for(j in 1:10){
for(k in 1:10){
我的问题是如何解决像
这样的情况for(i in 1:10){
...
for(j in 1:10){
...
for(k in 1:10){
...
这是我的例子:
di<-vector("list",length(rotte_merge2))
od<-vector("list",length(rotte_merge2))
for(i in 1:length(rotte_merge2)){
a<-rotte_merge2[[i]]
rotte_<-split(a, a$callsign)
dist_in_km<-matrix(ncol=1, nrow =length(rotte_))
dist_OD<-matrix(ncol=1, nrow =length(rotte_))
for(j in 1:length(rotte_)){
c<-rotte_[j]
c<-data.frame(c)
colnames(c)<-c("time","lat","lon","callsign","OR","DE","ICAOType","merge","count")
g<-length(c$lat)
c<-c[order(c$time),]
plot(c$lat,c$lon)
d <- sapply(2:(nrow(c)-1), function(x) distGeo(cbind(c$lon[x],c$lat[x]),cbind(c$lon[x-1],c$lat[x-1]))/1000);
d[1]<- distGeo(cbind(c$lon[g-1], c$lat[g-1]),cbind(c$lon[1], c$lat[1]))/1000
d[2]<-distGeo(cbind(c$lon[2], c$lat[2]),cbind(c$lon[g], c$lat[g]))/1000
max_dist<-which.max(d)
dist_in_km[j,1]<-d[max_dist]
dist_OD[j,1]<-distGeo(cbind(c$lon[length(c$lat)], c$lat[length(c$lat)]),cbind(c$lon[1], c$lat[1]))/1000
}
di[[i]]<-dist_in_km
od[[i]]<-dist_OD
print(i)
flush.console()
}
其中rotte_merge2是矩阵列表。
非常感谢。
EDIT 在我的例子中,我有一个矩阵列表。矩阵是坐标的集合。第一步是列表中的分割矩阵,我想计算每个列表中一个点与其后继者之间的距离。 因此,第一个循环是按矩阵滚动,第二个循环是按列表滚动(通过拆分矩阵创建),最后一个循环是按每个坐标滚动。
matrices(rotte_merge2)就像
time lat lon callsign OR DE ICAOType merge
1504252229 50.84889 4.359764500 ICE554 BIKF EBBR B752 BIKF EBBR
1504252244 63.99482 -22.623094412 ICE554 BIKF EBBR B752 BIKF EBBR
1504252259 63.99482 -22.622935955 ICE554 BIKF EBBR B752 BIKF EBBR
1504252274 63.99482 -22.622883136 ICE554 BIKF EBBR B752 BIKF EBBR
1504252289 63.99482 -22.622883136 ICE554 BIKF EBBR B752 BIKF EBBR
1504252304 63.99482 -22.622883136 ICE554 BIKF EBBR B752 BIKF EBBR
1504252319 63.99482 -22.622883136 ICE554 BIKF EBBR B752 BIKF EBBR
1504252334 63.99482 -22.622883136 ICE554 BIKF EBBR B752 BIKF EBBR
1504252349 63.99429 -22.620437622 ICE554 BIKF EBBR B752 BIKF EBBR
1504256579 53.58838 0.2505852 WOW462 BIKF EBBR A321 BIKF EBBR
1504256594 53.57529 0.2985927 WOW462 BIKF EBBR A321 BIKF EBBR
1504256609 53.56174 0.3477958 WOW462 BIKF EBBR A321 BIKF EBBR
1504256624 53.54768 0.3973912 WOW462 BIKF EBBR A321 BIKF EBBR
1504256639 53.53391 0.4438477 WOW462 BIKF EBBR A321 BIKF EBBR
1504256654 53.51857 0.4946202 WOW462 BIKF EBBR A321 BIKF EBBR
1504256669 53.50456 0.5407628 WOW462 BIKF EBBR A321 BIKF EBBR
1504256684 53.49006 0.5888187 WOW462 BIKF EBBR A321 BIKF EBBR
列表通过callign分割矩阵(在本例中为2个列表)