【发布时间】:2021-08-17 01:17:41
【问题描述】:
我需要从 NASA 的 POWER(全球能源资源预测)下载天气数据。 nasapower 包是为使用 R 进行数据检索而开发的包。我需要下载许多位置(纬度、经度坐标)。为此,我尝试了一个包含三个位置的简单循环作为可重现的示例。
library(nasapower)
data1 <- read.csv(text = "
location,long,lat
loc1, -56.547, -14.2427
loc2, -57.547, -15.2427
loc3, -58.547, -16.2427")
i=1
all.weather <- data.frame()
for (i in seq_along(1:nrow(data1))) {
weather.data <- get_power(community = "AG",
lonlat = c(data1$long[i],data1$lat[i]),
dates = c("2015-01-01", "2015-01-10"),
temporal_average = "DAILY",
pars = c("T2M_MAX"))
all.weather <-rbind(all.weather, weather.data)
}
这很完美。问题是我试图使用purrr::map 来模仿这个,因为我想在tidyverse 中有一个替代方案。这是我所做的,但它不起作用:
library(dplyr)
library(purrr)
all.weather <- data1 %>%
group_by(location) %>%
map(get_power(community = "AG",
lonlat = c(long, lat),
dates = c("2015-01-01", "2015-01-10"),
temporal_average = "DAILY",
site_elevation = NULL,
pars = c("T2M_MAX")))
我收到以下错误:
Error in isFALSE(length(lonlat != 2)) : object 'long' not found
关于如何使用purrr 运行它的任何提示?
【问题讨论】:
-
get_power符合 tidy eval 吗?如果没有,您可能必须指定 data1$long, data1$lat...
标签: r loops for-loop tidyverse purrr