R (Геосферная библиотека) - «Ошибка в if (antipodal (p1, p2)) {: отсутствует значение, если требуется TRUE / FALSE» - PullRequest
1 голос
/ 02 апреля 2020

У меня есть проблема, которую я пытался решить безуспешно в течение семи часов. По сути, я пытаюсь визуализировать данные об аэропорте и рейсах с openflights.org. Предполагалось, что это будет простая, простая визуализация, но она превратилась в настоящий волосатик.

Все работает до l oop. Когда я пытаюсь запустить для l oop, чтобы изобразить траектории полета на моей карте, он работает немного, и на карте появляются некоторые линии, но затем он выходит с ошибкой: Error in if (antipodal(p1, p2)) { : missing value where TRUE/FALSE needed

Что я пытался сделать, чтобы это исправить: Как видите, я просмотрел набор данных и удалил все некорректные записи. Например, были некоторые идентификаторы "\\ N", и поэтому я полностью удалил эти записи. Затем я попытался изменить идентификаторы на числа, а не на строки, просто чтобы посмотреть, что произойдет.

Это всегда выдает ошибку примерно в одно и то же время после того, как я запускаю для l oop, есть ли способ, которым я могу просмотреть строку, до которой дошла ошибка? Я тоже новичок R.

Я знаю, что подобный вопрос задавался ранее, но ни одно из решений, которые они там имели, не работало для меня. Спасибо за любую помощь, которую вы можете предоставить.

Код:

library('geosphere')
library('maps')


# Reading in the files from openflights.org
airports <- read.csv("airports.dat.txt", header=FALSE, col.names=c("Airport ID","Name","City","Country","IATA","ICAO","Latitude","Longitude",
                                                               "Altitude","Timezone","DST", "TZ Database","Type","Source"), as.is=TRUE)
flights <- read.csv("routes.dat.txt", header=FALSE, col.names=c("Airline","Airline ID","Source Airport","Source Airport ID","Destination Airport",
                                                            "Destination Airport ID","Codeshare","Stops","Equipment"), as.is=TRUE)
# Cleaning the data set, there are some instances of the value "\\N" in the flights data set. 
flights <- flights[!grepl("\\N", flights$Source.Airport.ID),]
flights <- flights[!grepl("\\N", flights$Destination.Airport.ID),]

# Converting all of the IDs to numbers (I thought this might work but it did not)
flights$Source.Airport.ID <- as.numeric(flights$Source.Airport.ID)
flights$Destination.Airport.ID <- as.numeric(flights$Destination.Airport.ID)
airports$Airport.ID <- as.numeric(airports$Airport.ID)

# Creating a world background
map("world", col="white",  border="gray10", fill=TRUE, bg="gray30")
# Adding all of the airports as points
points(x=airports$Longitude, y=airports$Latitude, pch=19,
       cex=0.05, col="blue")

# Generating a color set to be used for mapping the flight paths
col.1 <- adjustcolor("limegreen", alpha=0.05)
col.2 <- adjustcolor("darkgreen", alpha=0.05)
edge.pal <- colorRampPalette(c(col.1, col.2), alpha = TRUE)
edge.col <- edge.pal(100)

# Now, generating the visualization of the flight paths. 
# Here is where the error occurs, when I run this. 
# It gets through some of the data but then errors out. 
for(i in 1:nrow(flights))  {
  node1 <- airports[airports$Airport.ID == flights[i,]$Source.Airport.ID,]
  node2 <- airports[airports$Airport.ID == flights[i,]$Destination.Airport.ID,]

  arc <- gcIntermediate( c(as.numeric(node1[1,]$Longitude), as.numeric(node1[1,]$Latitude)),
                         c(as.numeric(node2[1,]$Longitude), as.numeric(node2[1,]$Latitude)),
                         n=1000, addStartEnd=TRUE)
  #edge.ind <- round(100*table(flights[i,]$Source.Airport.ID) / table(max(airports$Airport.ID)))

  #lines(arc, col=edge.col[edge.ind], lwd=edge.ind/30)
  lines(arc, col = "limegreen", lwd = 0.02)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...