检查现有 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 月),因此几乎可以肯定只查看要避免冲突的子集会更好。另外,再次强调评论中的一些好的建议(仅供记录,以防评论被删除或隐藏):
- 与其他包共享函数名称并不是一个大问题,也不值得避免,也许可以避免与最有可能同时加载的通用包发生冲突(感谢@Nicola 和@Joran)
- 不必要地避免重复使用名称"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])))
我正在创建一个 R 包,我打算将其提交给 CRAN。如何检查我的函数名称是否与 CRAN 上已有的包中的函数名称冲突?在我的包去之前public,改函数名还是很容易的,我想做个好公民,尽可能避免冲突。
例如,the packages MASS and dplyr both have functions called "select"。我想避免那种碰撞。
有很多软件包(目前为 9008,2016 年 8 月),因此几乎可以肯定只查看要避免冲突的子集会更好。另外,再次强调评论中的一些好的建议(仅供记录,以防评论被删除或隐藏):
- 与其他包共享函数名称并不是一个大问题,也不值得避免,也许可以避免与最有可能同时加载的通用包发生冲突(感谢@Nicola 和@Joran)
- 不必要地避免重复使用名称"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])))