Для / Пока-L oop в R - PullRequest
       0

Для / Пока-L oop в R

0 голосов
/ 16 апреля 2020

У меня есть следующая карта, https://i.stack.imgur.com/hsssC.png и следующий DF, который соответствует каждому узлу на карте https://i.stack.imgur.com/UD2DA.png. DF находится в порядке маршрута (красная линия), поэтому первый элемент в DF является начальной позицией, а последний элемент - концом, все промежуточные значения являются возможными остановками. Я пытаюсь создать аль oop, который проходит этот маршрут, отслеживая пройденные мили. Общее количество миль на этом маршруте составляет 1043, а вместимость бака составляет 300 миль. Когда автомобиль опускается ниже 60 миль, он должен найти ближайшую остановку и «долить». Заправка вернет машину на 300 миль и добавит координаты lon и lat ближайшей станции, где она заправляется, в список или в информационный блок. Это повторяется до тех пор, пока он не сможет завершить маршрут sh, не останавливаясь снова для топлива, это достигается, когда мили меньше емкости бака, а это означает, что у него достаточно газа, чтобы завершить поездку.

miles<-1043
tank<-300
dist<-0
k<-1
stops<-list()
for(k in 1:nrow(myDF){
dist[k]<-distm(c(myDF$lon[k], myDF$lat[k]), c(myDF$lon[k+1],myDF$lat[k+1] ),
            fun = distHaversine)*.000621371
miles<-miles-dist[k]
tank=tank-dist[k]

if(tank<=60){
  stops[i]<-myDF[k+1] #adding in the next station to refuel 
  tank=300 #tank back at max capacity
}
k=k+1
}

Этот код не работает, но он показывает идею того, что я пытаюсь выполнить sh. Я использую distm в библиотеке (геосфера), чтобы получить расстояние и умножить на .006, чтобы преобразовать в мили. Надеюсь, это было достаточно хорошее объяснение. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...