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

Check if a function name is used in existing CRAN packages

我正在创建一个 R 包,我打算将其提交给 CRAN。如何检查我的函数名称是否与 CRAN 上已有的包中的函数名称冲突?在我的包去之前public,改函数名还是很容易的,我想做个好公民,尽可能避免冲突。

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

有很多软件包(目前为 9008,2016 年 8 月),因此几乎可以肯定只查看要避免冲突的子集会更好。另外,再次强调评论中的一些好的建议(仅供记录,以防评论被删除或隐藏):

  1. 与其他包共享函数名称并不是一个大问题,也不值得避免,也许可以避免与最有可能同时加载的通用包发生冲突(感谢@Nicola 和@Joran)
  2. 不必要地避免重复使用名称"leads to bad function names because the good ones are taken"(@Konrad Rudolph)

但是,如果您真的想要检查所有包,也许至少要知道哪些包使用与您的相同的名称,你可以通过

得到包名的向量
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])))