【问题标题】:How to find all functions in an R package?如何找到 R 包中的所有函数?
【发布时间】:2013-12-30 09:02:48
【问题描述】:

查找包中所有关联函数的最佳方法是什么?我目前正在浏览 caTools 包。如果我这样做 ?caTools??caTools 我只是要搜索调用的函数,而不是包中的函数。有没有一种简单的方法可以访问 R gui 中的所有功能?有什么搜索函数的好方法吗?

【问题讨论】:

  • 没问题,但没必要删除问题。我可以提供答案,它可以帮助将来遇到与您相同问题的其他人。

标签: r r-faq


【解决方案1】:

另一种方法是使用collidr

library(collidr)
library(dplyr)

collidr::CRANdf %>% 
  filter(package_names  == "caTools")

#    package_names     function_names
# 1        caTools    caTools-package
# 2        caTools       base64encode
# 3        caTools       base64decode
# 4        caTools             colAUC
# 5        caTools              combs
# 6        caTools         LogitBoost
# 7        caTools predict.LogitBoost
# 8        caTools          read.ENVI
# 9        caTools         write.ENVI
# 10       caTools           read.gif
# 11       caTools          write.gif
# 12       caTools             runmad
# 13       caTools            runmean
# 14       caTools             runmin
# 15       caTools             runmax
# 16       caTools        runquantile
# 17       caTools              runsd
# 18       caTools       sample.split
# 19       caTools          sumexact,
# 20       caTools        cumsumexact
# 21       caTools              trapz

【讨论】:

【解决方案2】:

pacmanpackage (CRAN)(开发版:GitHub)非常适用于此。特别是p_funs 函数。

语法是:

p_funs(caTools)  # exported
p_funs(caTools, TRUE)  # includes non-exported

【讨论】:

    【解决方案3】:

    如果您想要所有导出的函数(即通过:: 访问的函数),那么getNamespaceExports(pkgName) 就可以了。

    如果您想要包中的所有功能,包括通过::: 访问的功能,您可以使用ls(getNamespace(pkgName))

    stringr 包为例:

    getNamespaceExports("stringr")
    [1] "fixed"           "ignore.case"     "invert_match"    "perl"            "str_c"               "str_count"       "str_detect"      "str_dup"         "str_extract"    
    [10] "str_extract_all" "str_join"        "str_length"      "str_locate"      "str_locate_all"  "str_match"       "str_match_all"   "str_pad"         "str_replace"    
    [19] "str_replace_all" "str_split"       "str_split_fixed" "str_sub"         "str_sub<-"       "str_trim"        "str_wrap"        "word" 
    

    但是,我们知道 stringr:::is.perl 存在于包中,如您所见:

    setdiff(ls(getNamespace("stringr")), getNamespaceExports("stringr"))
    [1] "case.ignored"    "check_pattern"   "check_string"    "compact"         "is.fixed"        "is.perl"         "match_to_matrix" "re_call"         "recyclable"     
    [10] "re_mapply"   
    

    所以,我们看到ls(getNamespace("stringr")) 包含除了::: 函数之外的所有getNamespaceExports("stringr")

    【讨论】:

    • 我喜欢这个答案,因为它不需要安装额外的包。只有基地的东西。酷!
    【解决方案4】:

    我猜你只是在寻找help(package = caTools),它将打开你的浏览器到相关的帮助页面,其中列出了“caTools”包中的所有功能。

    您也可以尝试:library(help = caTools),但这似乎并不能涵盖所有内容。后一种方法的好处是您可以捕获输出,以防您需要在其他地方引用它:

    x <- library(help = caTools)
    x$info[[2]]
    #  [1] "LogitBoost              LogitBoost Classification Algorithm"          
    #  [2] "base64encode            Convert R vectors to/from the Base64 format"  
    #  [3] "caTools-package         Tools: moving window statistics, GIF, Base64,"
    #  [4] "                        ROC AUC, etc."                                
    #  [5] "colAUC                  Column-wise Area Under ROC Curve (AUC)"       
    #  [6] "combs                   All Combinations of k Elements from Vector v" 
    #  [7] "predict.LogitBoost      Prediction Based on LogitBoost Classification"
    #  [8] "                        Algorithm"                                    
    #  [9] "read.ENVI               Read and Write Binary Data in ENVI Format"    
    # [10] "read.gif                Read and Write Images in GIF format"          
    # [11] "runmad                  Median Absolute Deviation of Moving Windows"  
    # [12] "runmean                 Mean of a Moving Window"                      
    # [13] "runmin                  Minimum and Maximum of Moving Windows"        
    # [14] "runquantile             Quantile of Moving Window"                    
    # [15] "runsd                   Standard Deviation of Moving Windows"         
    # [16] "sample.split            Split Data into Test and Train Set"           
    # [17] "sumexact                Basic Sum Operations without Round-off Errors"
    # [18] "trapz                   Trapezoid Rule Numerical Integration"   
    

    【讨论】:

      【解决方案5】:

      您可以通过以下方式获取包中的所有对象:

      ls("package:caTools")
      

      您可以通过以下方式获取包中的所有函数签名:

      lsf.str("package:caTools")
      

      【讨论】:

      • 你可能有一些以 wit 开头的函数名。 ,所以 ls(xxxx, all=TRUE) 保证列出所有导出的函数。并且您可以检查未导出的函数的源代码,即并非真正为最终用户使用但在内部包中使用(但有时仍然有用 - 并被其他人使用)。
      • 只是一个注释:在列出它的对象或功能之前,应该附加包。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2021-11-09
      相关资源
      最近更新 更多