У меня есть фрейм данных, содержащий координаты широты и долготы.У меня есть функция возвращает однорядный фрейм данных с данными об этих координатах.Я хочу применить эту функцию для всех координат в фрейме данных, а затем связать эти результаты.
Мои функции выглядят так:
getForecast <- function(lat, lon){
currentTime = Sys.time();
gmtTime = as.POSIXct(currentTime)
gmtTime <- toString(as.POSIXct(gmtTime, "%Y-%m-%dT%H:%M"))
arr <- unlist(strsplit(gmtTime, ' '))
curTime <- paste(arr[1], 'T', arr[2], sep="")
forecast <- get_forecast_for(lat, lon, curTime)
return(forecast)
}
getDailyForecast <- function(lat, lon){
forecast <- getForecast(lat, lon)
hourly_forecast <- forecast$current
weather_data <- select(hourly_forecast, 'time', 'temperature', 'humidity', 'windSpeed', 'windBearing', 'cloudCover', 'visibility', 'pressure', 'ozone', 'summary' )
return(weather_data)
}
curForecast <- getDailyForecast(41.870, -87.647)
curForecast$Lat <- 41.870
curForecast$Lon <- -87.647
print(curForecast)
n_locations <- reactive({
select(nodeLocations(), Lat, Lon)
})
get_forecast_for (lat, lon, curTime) в getForecast от darksky API
getDailyForecast возвращает это:
time temperature humidity windSpeed windBearing cloudCover visibility pressure ozone summary
2019-04-23 16:57:10 51.32 0.67 6.27 103 0.78 8.42 1017.38 331.68 Mostly Cloudy
curForecast выглядит следующим образом после добавления широты и долготы:
time temperature humidity windSpeed windBearing cloudCover visibility pressure ozone summary Lon Lat
1 2019-04-23 16:57:10 51.32 0.67 6.27 103 0.78 8.42 1017.38 331.68 Mostly Cloudy 41.87838 -87.62768
n_locations выглядит так:
Lat Lon
-87.62768 41.87838
-87.71299 41.75124
-87.57535 41.72246
Я хочу, чтобы данные, которые выглядели так:
time temperature humidity windSpeed windBearing cloudCover visibility pressure ozone summary Lon Lat
2019-04-23 16:57:10 51.32 0.67 6.27 103 0.78 8.42 1017.38 331.68 Mostly Cloudy 41.87838 -87.62768
2019-04-23 16:58:14 55.13 0.6 5.93 91 0.76 9.73 1017.18 329.9 Mostly Cloudy 41.75124 -87.71299
2019-04-23 16:59:13 50.22 0.71 6.33 87 0.87 7.92 1017.4 329.59 Mostly Cloudy 41.72246 -87.57535
РЕДАКТИРОВАТЬ: для:
do.call(rbind, apply(coordinates, 2, function(z) getDailyForecast(z[1], z[2])))
Я получаю этот результат:
time temperature humidity windSpeed windBearing cloudCover visibility pressure ozone summary
Lat 2019-04-23 00:33:18 -44.83 0.53 21.68 137 0.25 6.91 1024.57 241.12 Partly Cloudy
Lon 2019-04-23 08:33:18 53.69 0.79 10.19 239 0.44 3.90 1028.36 441.36 Partly Cloudy
Это только первые две строки координат
Это должно выглядеть так:
Lat Lon time temperature humidity windSpeed windBearing cloudCover visibility pressure ozone summary
41.87838 -87.62768 2019-04-23 16:57:10 51.32 0.67 6.27 103 0.78 8.42 1017.38 331.68 Mostly Cloudy
41.75124 -87.71299 2019-04-23 16:58:14 55.13 0.6 5.93 91 0.76 9.73 1017.18 329.9 Mostly Cloudy
41.72246 -87.57535 2019-04-23 16:59:13 50.22 0.71 6.33 87 0.87 7.92 1017.4 329.59 Mostly Cloudy