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见,他们主张使用这种命名规则有点奇怪。
全文如下:
一路强调! 与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)