我怎样才能看到`dplyr :: collect`方法的帮助?

时间:2016-09-27 00:08:39

标签: r dplyr

我试图找出哪些其他参数可以在省略号dplyr::collect中传递给...。我想这样做是因为我认为collect版本dplyr0.4.3之间0.5的行为发生了变化。似乎在新版本collect()中只下载了前100k行,除非传递了新的n = Inf参数。

我使用以下方法检索了与collect相关联的方法:

> methods('collect')
[1] collect.data.frame* collect.tbl_sql*   
see '?methods' for accessing help and source code

我查看了S3 methods的帮助文件,但无法确定如何获取collect.tbl_sql的帮助,因为?"dplyr::collect.tbl_sql"不起作用。

1 个答案:

答案 0 :(得分:2)

正如ChrisssZheyuan Li所述:

  1. 运行methods后方法名称旁边的星号/星号/ *表示不会从dplyr命名空间导出这些方法。
  2. 要访问帮助文件,需要使用三个冒号,即?dplyr:::collect.tbl_sql
  3. 但是,这些方法没有帮助文件,因此我们需要检查源代码,以查看各个版本中每个函数的行为。
  4. 0.4.3通过检查source code中的tbl-sqr.r文件:

    collect.tbl_sql <- function(x, ...) {
      grouped_df(x$query$fetch(), groups(x))
    }
    

    0.5

    > dplyr:::collect.tbl_sql
    
    function (x, ..., n = 1e+05, warn_incomplete = TRUE) 
    {
        assert_that(length(n) == 1, n > 0L)
        if (n == Inf) {
            n <- -1
        }
        sql <- sql_render(x)
        res <- dbSendQuery(x$src$con, sql)
        on.exit(dbClearResult(res))
        out <- dbFetch(res, n)
        if (warn_incomplete) {
            res_warn_incomplete(res, "n = Inf")
        }
        grouped_df(out, groups(x))
    }
    

    因此,我们可以得出结论,collect的行为确实以我最初在我的问题中描述的方式发生了变化。