R中命名variables的首选样式是什么?

R代码支持哪些命名variables和函数的约定?

据我所知,有几个不同的约定,所有这些约定并存在和谐的和声中:

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

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

优点:在R核心领域具有历史意义,在R核心中stream行,并由Google R风格指南推荐 。

缺点: Rife具有面向对象的含义,并且混淆了R的新手

2.使用下划线

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

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

缺点: R程序员没有被历史使用; 在Emacs-Speaks-Statistics(可以用'ess-toggle-underscore'改变)中被烦人的映射到'< – '操作符。

3.使用混合大写字母(camelCase)

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

优点:似乎在多个语言社区有广泛的采用。

缺点:有近期先例,但没有历史使用(无论是在R基地还是其文件)。

最后,就好像它不够混乱,我应该指出,谷歌风格指南认为variables的点符号,但function的混合大写。

R包缺乏一致的风格在几个层面上是有问题的。 从开发者的angular度来看,这使得维护和扩展其他代码变得困难(特别是其风格与您自己的风格不一致的地方)。 从R用户的angular度来看,不一致的语法会加深R的学习曲线,通过乘以一个概念可能被expression的方式(例如,该date的铸造函数为Date(),as.date()或as_date()?date())。

以前的答案很好,所以在这里添加一点:

  • 下划线对于ESS用户来说真的很烦人; 考虑到ESS被广泛使用,你不会在ESS用户编写的代码中看到许多下划线(并且该集合包括一堆R核心以及CRAN作者,尽pipe像Hadley一样)。

  • 点也是邪恶的,因为它们可以在简单的方法调度中混合起来; 我相信我曾经在R列表上看过这样的评论:点是历史的神器,不再鼓励;

  • 所以我们还有一个明确的赢家仍然站在最后一轮:camelCase。 我也不确定我是否同意“在R社区缺乏先验”的说法。

是的:实用主义和一贯性王牌教条。 所以无论是作品还是被同事和合着者所使用。 毕竟,我们仍然有空白和大括号来争论:)

我做了一个关于什么命名约定是实际使用的CRAN已被接受R日记:)调查:这是一个图表总结结果:

在这里输入图像说明

结果(也许没有什么惊喜),lowerCamelCase最常用于函数名和period.separated名称最常用的参数。 要使用UpperCamelCase,正如Google的R风格指南所倡导的那样,实际上很less见,他们主张使用这种命名规则有点奇怪。

全文如下:

archive/2012-2/RJournal_2012-2_Baaaath.pdf

一路强调! 与stream行的观点相反,基数R中有许多使用下划线的函数。 运行grep("^[^\\.]*$", apropos("_"), value = T)来查看它们全部。

我使用官方哈德利编码风格 ;)

我喜欢camelCase,当骆驼实际上提供了一些有意义的东西 – 比如数据types。

dfProfitLoss,其中df = dataframe

要么

vdfMergedFiles(),函数接受一个向量并吐出一个dataframe

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

正如我在这里指出的那样:

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

值得注意的是,如果您的variables名称不是非母语的话,您的variables名称对于您的同事/用户是多么可以理解的。

出于这个原因,我会说下划线和句号比大写更好,但是正如你指出的那样,在你的脚本中一致性是必不可less的。

这归结为个人喜好,但我遵循谷歌风格指南,因为它符合核心团队的风格。 我还没有在base R的variables中看到下划线。

正如其他人所提到的,下划线会使很多人失望。 不,不太严格,但也不是特别常见。

使用点作为分隔符与S3类等有点毛茸茸的。

根据我的经验,似乎很多R的高级麻烦都喜欢使用camelCase,有点用法和一些下划线。

我有一个喜欢mixedCapitals。

但我经常用句点来表示variablestypes是什么:

mixedCapitals.mat是一个matrix。 mixedCapitals.lm是一个线性模型。 mixedCapitals.lst是一个列表对象。

等等。

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

PSOE_votes – > PSOE(西class牙政治组织)的票数。

PSOE_states – >分类,表示PSOE获胜的状态{阿拉贡,安达卢西亚,…)

PSOE_political_force – > Categorial,表示PSOE(第一,第二,第三)

PSOE_07 – > 2007年PSOE_votes + PSOE_states + PSOE_political_force的联盟( hader – > votes,states,position

如果我的variables是在一个/两个使用混合大写的variablesI中应用函数的结果。

例:

positionXstates < – xtabs(〜states + position,PSOE_07)