在R代码中,您喜欢使用哪些命名变量和函数的约定?

据我所知,有几种不同的习俗,它们在discord的和谐中共存:

1. Use of period separator, e.g.

  stock.prices <- c(12.01, 10.12)
  col.names    <- c('symbol','price')

Pros:在R社区中具有历史优先地位,在整个R核心中普遍存在,并被Google's R Style Guide推荐.

Cons:充满了面向对象的内涵,让R新手感到困惑

2. Use of underscores

  stock_prices <- c(12.01, 10.12)
  col_names    <- c('symbol','price')

Pros:在许多编程语言中是一种常见的约定;受Hadley Wickham's Style Guide人青睐,用于ggplot2和plyr软件包.

Cons:个历史上没有被R程序员使用过;令人恼火地映射到"&lt;-"Emacs中的运算符讲统计信息(可使用"ess切换下划线"进行更改).

3. Use of mixed capitalization (camelCase)

  stockPrices <- c(12.01, 10.12)
  colNames    <- c('symbol','price')

Pros:似乎在一些语言社区得到了广泛采用.

Cons:有最近的先例,但历史上没有使用过(在R库或其文档中).

最后,似乎还不够混乱,我应该指出,谷歌风格的指南主张变量使用点符号,但函数使用混合大写.

在R包中缺乏一致的风格在几个层面上都存在问题.从开发人员的Angular 来看,这使得维护和扩展他人的代码变得困难(尤其是在其风格与您的风格不一致的情况下).从R用户的Angular 来看,不一致的语法会使R的学习曲线变陡,方法是将一个概念的表达方式相乘(例如,日期转换函数asDate(),as).日期(),还是作为日期()?不,是这样的.日期()).

推荐答案

之前的答案很好,所以这里需要补充一点:

  • 下划线对ESS用户来说是really个恼人的字符;考虑到ESS的应用相当广泛,在ESS用户编写的代码中,你不会看到太多下划线(这组代码包括一堆R Core和CRAN作者,尽管有Hadley这样的例外);

  • 圆点也是邪恶的,因为它们可以在简单的方法中混为一谈;我相信我曾经在R列表中读到过这样的 comments :圆点是一种历史文物,不再受到鼓励;

  • 因此,我们有一个明显的赢家仍然站在最后一轮:camelCase.我也不确定我是否真的同意"R社区缺乏先例"的说法.

是的:实用主义和一致性特朗普教条.因此,无论什么都有效,并被同事和合著者使用.毕竟,我们还有空白和括号需要争论:)

R相关问答推荐

Rplotly中的Sankey Diagram:意外连接&

如何提取所有完美匹配的10个核苷酸在一个成对的匹配与生物字符串在R?>

将二进制数据库转换为频率表

从R中发出的咕噜声中的BUG?

将全局环境变量的名称分配给列表中的所有元素

如何创建累加到现有列累计和的新列?

在纵向数据集中创建新行

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

用满足特定列匹配的另一行替换NA行

如果极点中存在部分匹配,则替换整个字符串

如何为包创建自定义roxygen2标签?

带查找数据的FCT_REORDER.帧

按顺序将地块添加到列表

使用';IF';运算符判断数据框单元格中的给定值是否属于一组值

如何根据列名和行名求和矩阵的值?

R直方图存储计算的bin值

Strgr::str_glue()不适用于prrr::map()

在一列中创建 colored颜色 标签,在另一列中创建值,图例将两者结合在一起

如何计算沿SF线到给定点的距离?

我们如何在同一行上放置注释和新的代码行