检查现有CRAN包中是否使用了函数名称

时间:2016-08-22 15:21:06

标签: r cran

我正在创建一个我计划提交给CRAN的R包。如何检查我的任何函数名称是否与CRAN上已有的函数名称冲突?在我的软件包上市之前,更改函数名称仍然很容易,我希望成为一个好公民,尽可能避免冲突。

例如,the packages MASS and dplyr both have functions called "select"。我想避免那种碰撞。

1 个答案:

答案 0 :(得分:6)

有很多软件包(目前为9008,2016年8月),所以几乎可以肯定只看一个你想要避免冲突的子集。此外,重新强调评论中的一些好建议(仅在记录被删除或隐藏的情况下记录):

  1. 与其他软件包共享函数名称并不是一个大问题,不值得避免,也许避免与最有可能同时加载的常见软件包发生冲突(感谢@Nicola和@Joran)
  2. 不必要地避免重新使用名称“导致功能名称不好,因为好的名字被带走了”(@Konrad Rudolph)
  3. 但是,如果您真的想要检查所有这些包,或许至少知道哪些包使用与您相同的名称,您可以获得一个包名称由

    crans <- available.packages()[, "Package"]
    #           A3        abbyyR           abc   ABCanalysis      abc.data      abcdeFBA 
    #         "A3"      "abbyyR"         "abc" "ABCanalysis"    "abc.data"    "abcdeFBA"
    length(crans)
    # [1] 9008
    

    然后您可以使用

    批量安装它们
    N = 4 # only using the 1st 4 packages here - 
          # doing it for the whole lot will take a lot of time and disk space!!!
    install.packages(crans[1:N])
    

    然后,您可以使用

    获取这些包中的函数名称列表
    existing_functions = sapply(1:N, function(i)  ls(getNamespace(crans[i])))