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

Sam*_*rke 6 r cran

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

例如,包MASS和dplyr都具有称为"选择"的功能.我想避免那种碰撞.

dww*_*dww 6

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

  1. 与其他软件包共享函数名称并不是一个大问题,不值得避免,也许避免与最有可能同时加载的常见软件包发生冲突(感谢@Nicola和@Joran)
  2. 不必要地避免重新使用名称"导致功能名称不好,因为好的名称被采用"(@Konrad Rudolph)

但是,如果你真的想检查所有包,或许至少知道哪些包使用与你的相同的名称,你可以得到包名的向量

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

然后,您可以使用批量安装它们

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])
Run Code Online (Sandbox Code Playgroud)

然后,您可以获得这些包中的函数名称列表

existing_functions = sapply(1:N, function(i)  ls(getNamespace(crans[i])))
Run Code Online (Sandbox Code Playgroud)