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

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

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列表中读到过这样的评论:圆点是一种历史文物,不再受到鼓励;

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

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

R相关问答推荐

使用 R 解密 PHP 中加密的消息

在R中按组查找最长的值序列

expss表输出的rbinding表错误

合并三个不同行长的df

在R中以长格式(相对于基组)按组计算跨行的增长率

更改输入值时不要清除(用户输入的)react 变量的值

跨不同数据集跟踪观察结果(例如 sub-reddits)

删除不增加基于其他列值的行

如何根据值在矩阵上水平移动行

在R中递归添加一列

我如何知道模型是否在 lme4 中收敛或未能在 r 中出现警告消息?

将一行转换成combine,c()作为r中的向量,然后用向量计算余弦相似度

查找 R 包中使用的 Fortran 文件

计算R中几个分类变量的频率

如何为 r markdown pdf 输出创建自定义示例环境?

使用 dplyr 随机标记组内的记录

在 dplyr 中使用 mutate 和 case_when 将新值插入数据框中

通过匹配正则表达式将字符串分解为组件

如何从矩数组表中调用名称中包含特定字符串的矩阵?

如何计算r中分布的重叠百分比?