Я искал, как безуспешно взаимодействовать с ошибкой API внутри R-функций.Я нашел решения с tryCatch()
, но я не осознаю этого, поэтому я решил спросить здесь.
У меня есть такой набор данных, как это ниже.
fluxo <-
structure(list(code_o = c("355030802000004", "355030802000012", "355030802000013",
"355030802000014", "355030802000030", "355030802000036"),
code_d = c("3503488", "3503488", "3503488", "3503488", "3503488", "3503488"),
fx = c(-46.70104009, -46.69845387, -46.69815333,
-46.70141047, -46.69755981, -46.69996442),
fy = c(-23.55023455, -23.54720393, -23.55123612,
-23.55210794, -23.54364215, -23.55333346),
tx = c(-46.7224721383401, -46.7224721383401, -46.7224721383401,
-46.7224721383401, -46.7224721383401, -46.7224721383401),
ty = c(-23.5375321244996, -23.5375321244996, -23.5375321244996,
-23.5375321244996, -23.5375321244996, -23.5375321244996)),
.Names = c("code_o", "code_d", "fx", "fy", "tx", "ty"),
row.names = c(NA, 6L), class = "data.frame")
Чтобы найти расстояния и длительность пути между точками code_o и code_d, я использую функцию dist_google()
из пакета stplanr
, которая взаимодействует с Google Distance Matrix API.Функция получает только все-все-все результаты (все code_o ко всем code_d), и мне нужны только заданные пары строк.Потому что ниже я написал цикл для выполнения этой задачи.
library(stplanr)
tempos_falta_ubs <- data.frame()
for (linha in 1:nrow(fluxo)) {
origin <- fluxo[linha, 3:4]
destiny <- fluxo[linha, 5:6]
tempos_falta_ubs <- rbind(tempos_falta_ubs,
dist_google(from=origin,
to=destiny,
mode='walking'))
}
Но иногда он возвращает это сообщение об ошибке:
Error: No results for this request (e.g. due to lack of support for this mode between the from and to locations).
Когда это происходит, я хочу пропустить эту пару строквведите еще одну строку в tempos_falta_ubs
(с NA во всех столбцах) и переходите к следующей.Я делаю это вручную, но это отстой.Как я могу сделать это автоматически без остановки цикла?
Заранее спасибо.