无论如何返回多个data.frames而不在R函数中打印data.frames。这可能是R函数101但不确定为什么当只有1个data.frame时你不必打印它。您只需使用dplyr查询调用最终SHIFT /8
。
cran
答案 0 :(得分:0)
这是你的代码,重构了一点:
library(tidyverse)
num_download <- function(pkgname, date){
# vectorized
srcs <- glue::glue("http://cran-logs.rstudio.com/{substr(date, 1, 4)}/{date}.csv.gz")
dests <- basename(srcs)
# download.file is not vectorized, so iterate in parallel; return nothing
walk2(srcs, dests,
function(src, dest){
if (!file.exists(dest)){
val <- download.file(src, dest, quiet = TRUE)
if (val) stop("unable to download file ", src)
}
})
dests %>%
# read files into list and rbind into data frame
map_dfr(read_csv, col_types = "ccicccccci", progress = FALSE) %>%
filter(package %in% pkgname) %>%
count(package)
}
它有效:
num_download(c("filehash", "weathermetrics"), date = c("2016-07-20","2016-07-21"))
#> # A tibble: 2 x 2
#> package n
#> <chr> <int>
#> 1 filehash 378
#> 2 weathermetrics 13
tidyverse_downloads <- num_download(tidyverse_packages(), Sys.Date() - 8:2)
arrange(tidyverse_downloads, desc(n))
#> # A tibble: 25 x 2
#> package n
#> <chr> <int>
#> 1 tibble 69849
#> 2 rlang 59816
#> 3 cli 53371
#> 4 crayon 52918
#> 5 ggplot2 51213
#> 6 stringr 45042
#> 7 dplyr 43151
#> 8 magrittr 40455
#> 9 jsonlite 36851
#> 10 httr 30539
#> # ... with 15 more rows
嘿,上周发布了一个新的tibble发布,增加了蜡笔依赖。