【发布时间】:2020-02-07 20:44:35
【问题描述】:
我正在尝试创建一个具有 2 列 start_date 和 end_date 的 tbl_df。每行在start_date 和end_date 之间将有6 天。我想使用每行中的start_date 和end_date 值来输入使用purrr::map 的抓取函数。
# example tbl_df
df <- tibble::tribble(
~start_date, ~end_date,
"6/1/2019", "6/7/2019",
"6/8/2019", "6/14/2019"
)
df
#> # A tibble: 2 x 2
#> start_date end_date
#> <chr> <chr>
#> 1 6/1/2019 6/7/2019
#> 2 6/8/2019 6/14/2019
我尝试绑定 2 个向量,但它们的长度通常不均匀。有没有更好的方法来解决这个问题?我也不确定purrr 是否会接受日期作为参数值。
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date
start_date <- lubridate::ymd("2019-06-01")
end_date <- lubridate::ymd("2019-08-01")
start_dates <- seq(start_date, end_date, by = "1 week" )
end_dates <- seq (lubridate::ymd("2019-06-07"), end_date, by = "1 week")
由reprex package (v0.3.0) 于 2020 年 2 月 7 日创建
示例函数为:
scrape_function <- function(start_date, end_date) {
url <- glue::glue("http://www.example.com/start_date={start_date}&end_date={end_date}")
# scrape data and return df
df
}
另外,我将如何使用start_date 和end_date 值通过safely 传递给purrr::map2dfr?
【问题讨论】:
-
在您的 scrape_function 中,您正在传递“url”并返回“df”(不清楚)
-
scrape 函数有一个 URL,它带有一个开始日期和结束日期。对 scrape 函数的每次调用都使用 URL 并最终解析为 df。我没有在示例中包含 httr 和 json 步骤。我想对使用 start_date 和 end_date 的组合构建的多个 URL 进行行绑定,这些 URL 输入到 scrape 函数中。
-
请通过
map2查看我更新的解决方案。我无法测试抓取部分,因为 url 是虚拟的 -
假设抓取功能正常工作,如果任何抓取结果不返回 df,我将如何安全地包装它?
-
我会将
scrape_function包装成possibly即f1 <- possibly(scrape_function, otherwise = NA),然后调用f1。