为 CRAN 包命名 R 函数的最佳实践?
Best practise to name R functions for CRAN packages?
我想通过 CRAN 发布一个 R 包。在这个包中,我有
的功能
- 模拟数据,
- 绘制模型结果,
- 并预测值。
我正在努力寻找合理的函数名称。我想使用简单的名称 simulate、plot 和 predict。但是,这些名称已经存在于 base R 或 stats 包中,可能会导致混淆。
我可以
- 忽略这个问题,
- 使用 S3 类,
- 命名函数 "packagename"_plot.
最佳做法是什么?
许多专注于实现特定 class 的包具有打印、格式、as.character、摘要和其他与基本泛型相对应的 S3 方法。如果支持 ggplot2 图形,则可以提供自动绘图方法,如果支持点阵图形,则可以提供 xyplot 方法。
如果包涉及模型,那么此类包通常会包含 lm
:
的部分或全部方法
> methods(class = "lm")
[1] add1 alias anova case.names coerce
[6] confint cooks.distance deviance dfbeta dfbetas
[11] drop1 dummy.coef effects extractAIC family
[16] formula hatvalues influence initialize kappa
[21] labels logLik model.frame model.matrix nobs
[26] plot predict print proj qr
[31] residuals rstandard rstudent show simulate
[36] slotsFromS3 summary variable.names vcov
see '?methods' for accessing help and source code
这使得用户可以轻松使用 package/class,因为他们可以利用他们的 R 知识使用熟悉的方法名称,而不必学习新名称。
如果软件包专注于特定的 class,那么为简单起见,class 名称也可以作为软件包的名称。
此 document 中有一个 tidyverse 最佳实践部分。
还有一个 document 描述了 zoo 包中使用的设计原则,与此答案中所述的原则基本一致。可能其中一些需要根据经验进行修改,例如使用动物园错误列表会有所帮助(动物园包早于 github 和 github 问题在 R 中的广泛使用),但其他原则看起来很有根据。
同意或不同意这些文件,把你的包的设计原则写下来会很有用。
我想通过 CRAN 发布一个 R 包。在这个包中,我有
的功能- 模拟数据,
- 绘制模型结果,
- 并预测值。
我正在努力寻找合理的函数名称。我想使用简单的名称 simulate、plot 和 predict。但是,这些名称已经存在于 base R 或 stats 包中,可能会导致混淆。
我可以
- 忽略这个问题,
- 使用 S3 类,
- 命名函数 "packagename"_plot.
最佳做法是什么?
许多专注于实现特定 class 的包具有打印、格式、as.character、摘要和其他与基本泛型相对应的 S3 方法。如果支持 ggplot2 图形,则可以提供自动绘图方法,如果支持点阵图形,则可以提供 xyplot 方法。
如果包涉及模型,那么此类包通常会包含 lm
:
> methods(class = "lm")
[1] add1 alias anova case.names coerce
[6] confint cooks.distance deviance dfbeta dfbetas
[11] drop1 dummy.coef effects extractAIC family
[16] formula hatvalues influence initialize kappa
[21] labels logLik model.frame model.matrix nobs
[26] plot predict print proj qr
[31] residuals rstandard rstudent show simulate
[36] slotsFromS3 summary variable.names vcov
see '?methods' for accessing help and source code
这使得用户可以轻松使用 package/class,因为他们可以利用他们的 R 知识使用熟悉的方法名称,而不必学习新名称。
如果软件包专注于特定的 class,那么为简单起见,class 名称也可以作为软件包的名称。
此 document 中有一个 tidyverse 最佳实践部分。
还有一个 document 描述了 zoo 包中使用的设计原则,与此答案中所述的原则基本一致。可能其中一些需要根据经验进行修改,例如使用动物园错误列表会有所帮助(动物园包早于 github 和 github 问题在 R 中的广泛使用),但其他原则看起来很有根据。
同意或不同意这些文件,把你的包的设计原则写下来会很有用。