为 CRAN 包命名 R 函数的最佳实践?

Best practise to name R functions for CRAN packages?

我想通过 CRAN 发布一个 R 包。在这个包中,我有

的功能
  1. 模拟数据,
  2. 绘制模型结果,
  3. 并预测值。

我正在努力寻找合理的函数名称。我想使用简单的名称 simulateplotpredict。但是,这些名称已经存在于 base R 或 stats 包中,可能会导致混淆。

我可以

  1. 忽略这个问题,
  2. 使用 S3 类,
  3. 命名函数 "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 中的广泛使用),但其他原则看起来很有根据。

同意或不同意这些文件,把你的包的设计原则写下来会很有用。