在 R 中命名变量的首选样式是什么?

在 R 代码中,变量和函数的命名惯例是什么?

据我所知,有几种不同的习俗,所有这些习俗和谐地共存在一起:

1. 使用周期分隔符,例如

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

优点: 在 R 社区具有历史优先性,在整个 R 核心流行,并由 谷歌的 R 风格指南推荐。

缺点: 充斥着面向对象的内涵,让 R 新手感到困惑

2. Use of underscores

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

优点: 在许多编程语言中是一个常见的约定; 受到 Hadley Wickham 的风格指南的青睐,在 ggplot2和 plyr 包中使用。

缺点: R 程序员从来没有使用过; 在 Emacs-Speks-Statistics 中烦人地映射为“ <-”操作符(可以用“ ess-toggle-underscore”修改)。

3. Use of mixed capitalization (camelCase)

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

优点: 似乎在几个语言社区得到了广泛采用。

缺点: 有最近的先例,但没有历史使用(在 R 基地或其文档中)。

最后,似乎还不够混乱,我应该指出,Google Style Guide 主张变量使用点符号,但函数使用混合大写。

R 包之间缺乏一致的样式在几个层面上都是有问题的。从开发人员的角度来看,它使得维护和扩展他人的代码变得困难(尤其是。它的风格与你自己的不一致)。从 R 用户的角度来看,不一致的语法通过乘以表达概念的方式(例如,日期转换函数 asDate ()、 as.date ()或 as _ date ()) ,使 R 的学习曲线变陡?不,是因为。日期()。

23502 次浏览

This comes down to personal preference, but I follow the google style guide because it's consistent with the style of the core team. I have yet to see an underscore in a variable in base R.

正如我在这里指出的:

标识符的冗长程度如何影响程序员的性能?

值得注意的是,如果你的同事/用户不是以英语为母语的,那么你的变量名对他们来说是多么容易理解... ..。

出于这个原因,我想说下划线和句号比大写要好,但正如你所指出的,一致性在你的剧本中至关重要。

先前的回答不错,所以在这里补充一点:

  • 下划线对于 ESS 用户来说是令人讨厌的 真的; 鉴于 ESS 被广泛使用,你不会在 ESS 用户编写的代码中看到很多下划线(这个集合包括一些 R Core 和 CRAN 作者,尽管有像 Hadley 这样的例外) ;

  • 点也是邪恶的,因为它们可以在简单的方法分派中混淆; 我相信我曾经在 R 列表中读到过这样的评论: 点是历史的产物,不再受到鼓励;

  • 所以我们有一个明显的赢家仍然站在最后一轮: camelCase。我也不确定我是否真的同意“在 R 社区中缺乏先例”的主张。

是的: 实用主义和一致性胜过教条。因此,无论什么工程和使用的同事和合作作者。毕竟,我们还有空格和大括号要争论:)

我更喜欢混合资本。

但是我经常用句号来表示变量的类型:

Mat 是一个矩阵。 Mm 是一个线性模型。 mixedCapitals.lst is a list object.

and so on.

Underscores all the way! Contrary to popular opinion, there are a number of functions in base R that use underscores. Run grep("^[^\\.]*$", apropos("_"), value = T) to see them all.

I use the official 哈德利风格 of coding ;)

正如其他人所提到的,下划线会让很多人失望。不,这不是被禁止的,但也不是特别普遍。

使用圆点作为分隔符在 S3类和类似情况下会有点麻烦。

根据我的经验,似乎 R 的许多高粘度的污垢更喜欢使用 camelCase,有一些点的用法和一些下划线。

通常我使用下划线的 ix 和混合大写(camelCase)来重命名变量。简单变量使用下划线命名,例如:

PSOE (西班牙政治团体)的票数。

PSOE _ state -> 分类,表示 PSOE 获胜的州(阿拉贡,Andalucia,...)

PSOE _ policy _ force -> 范畴,表示 PSOE 的政治团体之间的位置(第一,第二,第三)

PSOE _ 07 -> 2007年 PSOE 选票 + PSOE 国家 + PSOE 政治力量联盟(header -> votes, states, position)

If my variable is a result of to applied function in one/two Variables I using a mixed capitalization.

Example:

Position Xstate <-xtab (~ state + position,PSOE _ 07)

我喜欢 camelCase,因为驼峰实际上提供了一些有意义的东西——比如数据类型。

损失,其中 df = dataframe

或者

VdfMergedFiles () ,该函数接受一个向量并生成一个数据帧

虽然我认为 _ 确实增加了可读性,但似乎有太多的问题与使用。或者名字中的其他字符。特别是如果你跨多种语言工作。

我做了一个关于 CRAN 上实际使用的命名规范的调查,这些规范被《 R 杂志》接受了:)这里有一个图表总结了调查结果:

enter image description here

事实证明(也许不足为奇) ,lowerCamelCase 最常用于函数名称和参数最常用的 period。分隔名称。然而,谷歌的 R 风格指南提倡的使用 UpperCamelCase 的情况实在是少之又少,而且他们提倡使用这种变数命名原则有点奇怪。

全文如下:

Http://journal.r-project.org/archive/2012-2/rjournal_2012-2_baaaath.pdf