【问题标题】:Best practise to name R functions for CRAN packages? [closed]为 CRAN 包命名 R 函数的最佳实践? [关闭]
【发布时间】:2021-09-28 16:55:48
【问题描述】:

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

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

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

我可以

  1. 忽略这个问题,
  2. 使用 S3 类,
  3. 为函数命名“packagename”_plot

什么是最佳实践?

【问题讨论】:

  • 这是一个非常自以为是的问题,超出了stackoverflow的范围。我会向 R-devel 邮件列表询问活跃的软件包开发人员的意见。但是,请注意存在许多意见。在您的具体情况下,我建议使用 S3 类。 S3 类的实现有充分的理由,并使代码更具通用性。它们是众所周知的,并在许多(如果不是大多数)R 包中使用。例如,predict.[class] 代表 predict_valuesplot.[class] 代表 plot_model_results
  • 不要在 R-devel 上询问。如果必须,请询问 R-Package-devel。
  • 谢谢@roland 我忘了限定词了,

标签: r package cran


【解决方案1】:

许多专注于实现特定类的包都有对应于基本泛型的 print、format、as.character、summary 和其他 S3 方法。如果支持 ggplot2 图形,则可以提供 autoplot 方法,如果支持 lattice 图形,则可以提供 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

这使用户可以轻松使用包/类,因为他们可以使用熟悉的方法名称来利用他们的 R 知识,而不必学习新名称。

如果包专注于特定的类,那么为了简单起见,类名也可以作为包的名称。

document 中有一个 tidyverse 最佳实践部分。

还有一个document 描述了 zoo 包中使用的设计原则,大部分与此答案中所述的原则一致。可能其中一些需要根据经验进行修改,例如使用 zoo 错误列表会有所帮助(zoo 包早于 github 和 R 中的 github 问题的广泛使用),但其他原则似乎很有根据。

同意或不同意这些文件,将包装的设计原则以书面形式写出来会很有用。

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2018-12-29
    相关资源
    最近更新 更多