Я работаю над проектом карты и нанес на карту листовок два набора данных маркеров (блестящее приложение). Один набор данных больше другого, и я рисую большие круговые дуги, соединяющие множество с немногими. Все работало нормально. Я обновил R с 3,5 до 3,6, и теперь я получаю сообщение «Ошибка в случае, если: пропущено значение там, где требуется ИСТИНА / ЛОЖЬ», которое я выделил для оператора for, который запускает дуги большого круга.
Жесткое кодирование значений в gcIntermediate() работает, но тогда я могу иметь только 1 фиксированную дугу. Создание нового фрейма данных со значениями работает, но построенный из импортированных данных data.frame больше не работает.
# inside server.R
output$MapNet <- renderLeaflet({
leaflet() %>%
addTiles(
urlTemplate = "http://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga",
attribution = 'Google'
) %>%
setView(lng = -93.85, lat = 37.45, zoom = 5)
})
NetData <- data.frame(PRgps.lon = c(-83.35300,-82.52681,-82.31592,-82.91263,-83.61500,-82.73041,-82.73041,-82.73041,-82.73041,-82.73041),
PRgps.lat = c(42.97400, 45.46538, 45.45996, 45.40823, 45.25417, 45.51366, 45.51366, 45.51366, 45.51366, 45.51366),
JCgps.lon = c(-82.68287,-81.63665,-81.96928,-81.96928,-81.96928,-82.92507,-81.96928,-82.61287,-81.06040,-81.63665),
JCgps.lat = c(45.68083, 45.66951, 45.58777, 45.58777, 45.58777, 45.24366, 45.58777, 45.68083, 44.65540, 45.66951),
popup = c("A", "P", "M", "M", "J ", "M", "M", "M", "M", "M")
)
arcbuilder(NetData, MapNet)
# Inside global.R
arcbuilder <- function(NetData, MapNet){
for (i in 1:nrow(NetData)) {
arc <- as.data.frame(gcIntermediate(c(NetData[i,]$PRgps.lon, NetData[i,]$PRgps.lat),
c(NetData[i,]$JCgps.lon, NetData[i,]$JCgps.lat),
n = 100, addStartEnd = TRUE ))
MapNet <- MapNet %>%
addPolylines(lat = arc$lat,
lng = arc$lon,
color = "green",
weight = 2,
popup = NetData[i,]$popup)
}
}
Приведенный выше код работает, данные, предоставленные NetData, являются главой (10)импортированных NetData. Аспекты num и chr - это то же самое, что и файл, если оставить их в этом поместье в одиночестве. Когда я не усердно ввожу его и подаю 100 строк данных в цикл for, я получаю предупреждение: Ошибка в: пропущенном значении, где требуется ИСТИНА / ЛОЖЬ. В частности, я получаю:
Warning: Error in if: missing value where TRUE/FALSE needed
48: .interm
47: gcIntermediate
45: arcbuilder [C:\Users\me\Documents\GitHub\Network_Map/global.R#193]
44: <observer> [C:\Users\me\Documents\GitHub\Network_Map/server.R#136]
1: runApp
Где в строке # 136 вызывается arcbuilder () на сервере. R, а в строке 193 используется gcIntermediate () внутри arcbuilder () в global.R
Наконец, при запуске всего data.frame NetData в функцию arcbuilder с настройкой карты для работы вне блеска он запускается без ошибок. Я проверил данные от NA или других аномалий, и я достаточно уверен, что их нет.
Чего мне не хватает?