当我在 R 中工作时,每次我创建一个新变量时,我都会尝试将其命名为简单,以便于输入 likex1, x2, ...
或a1, a2, ...
有时我使用名称为 temp 的临时变量,然后我再次继续制作 variables temp1, temp2, ...
。结果,最后我把一切都搞砸了,如果几天后再看,我就无法理解数据。在创建新变量和组织它们时,是否有任何简单的方法或规则可以遵循?
如何在不搞乱的情况下组织 R 中的变量名?
使用简单的短语
x1
与其依赖于非常通用的变量名,如, x2
, y1
, ,不如y2
开发一个非常简单的变量名系统:
通用变量:有些变量无处不在,因此更容易将它们命名为:male
、或edu
、等。随着时间的推移,这个变量的命名几乎是本能的。income
inc
age
保持简短:将名称保持在 6-8 个字符以内。我通常不使用大写字母,因为我倾向于为函数名称保存大写字符。但也可以使用satFat
(饱和脂肪)、skMilk
(脱脂牛奶)这样的系统将两个单词用一个大写字母链接起来,而不会影响可读性。
Slash vowels : 大多数英语单词在没有元音的情况下仍然很容易辨认。例如,sector
对sctr
,district
对dstrct
,group1
对grp1
,quartile
对qrtl
。同样,这是一个习惯问题,很快您将能够快速命名和识别它们。
保留语法
不管你做什么,保存语法。并在每次重大修订后定期备份,以便您拥有分析流程的存档。(又名,不要一直覆盖你的单个文件,保存历史级联的副本。)
有了良好的语法保持习惯,即使是适度混乱的变量命名也不会成为主要问题,因为用户总是可以追溯每个变量是如何产生的。
在你的语法上签名并注明日期,并要求其他人这样做。通过以下信息启动语法:
# Childhood obesity analysis (project name)
# by Penguin Knight
# e-Mail: xxxxxxx@gmail.com
# Phone: ext: 10101
# Date: Jun-12-2014
# Description of the analysis: blah blah blah.
# Version: 1.00
# Revision date and history:
这样,即使稍后有人查看您的语法可能会迷路,他们仍然可以与您联系以讨论并产生一些线索。
评论你的语法
尽可能多地使用注释。语法如:
lm(y ~ x1)
可能很神秘,但这不会使您感到困惑:
# y: body fat percent
# x1: weekly fastfood meals frequency
lm(y ~ x1)
到目前为止,我可能会建议,对于每个操作,至少应该有一行注释。即使这是你在那一周内完成了数百万次的事情,一旦你把这个项目搁置了几个星期,就很难弄清楚发生了什么。
维护密码本
使用注释功能维护代码簿:您还可以专门一个部分将所有变量名称及其描述放在同一个地方。我经常使用代码,例如@codebook
启动代码簿部分,然后每当我需要查看代码簿时,我只需使用 Ctrl-F 搜索短语@codebook
,我就会在那里。
保留一个单独的文件:对于涉及更多合作者的大型团队项目,我建议使用一个单独的文件,例如 Excel 文件(甚至是另一个 R 数据文件)来维护代码簿。
数据收集工具也制作了很棒的代码书:如果你在做一份问卷,你也可以用红笔在每个项目旁边写下变量名。如果我需要处理电子版本,我也会为此使用文本框。
使用后缀和前缀
开发您自己的后缀和前缀系统,以快速识别变量。例如,我总是把sv
那些我不想保留的临时变量放在前面。在像Stata这样的一些软件中,这个前缀可以让用户通过输入快速清除它们:
drop sv*
附加单位:后缀的另一个很好的用途是显示单位。例如,以年和月为单位的年龄ageyr
。作为1000s的收入。,如 2012 年和 2013 年的 GDP 数据等。agemo
inc1000
gdp2012
gdp2013
附加标签:您也可以使用前缀来确定阶层:例如,使用m
和f
与用于男性和女性的变量一起使用:medu
, fedu
。
我倾向于避免使用“。” 和 "_":大多数情况下,这两个字符在为另一个软件包导出数据时会导致问题。
发展一种风格,并坚持下去
最重要的一点是无论项目有多大或多么琐碎,都要坚持你的代码风格。保持代码的易读性不仅仅是控制压力和困惑的一种方式,也是一种职业礼貌和道德规范。
评论太久了,所以我想现在是答案。
对需要保留超过几分钟的任何内容使用长而描述性的名称。
长名称可能会让人讨厌键入,但如果您正在通过运行脚本、编写函数等工作,那么实际键入的内容并不多。
但即使是大量的输入也比试图弄清楚你对不记得的变量做了什么要容易得多。
想象一下,你需要弄清楚你在 6 个月或一年内做了什么——或者想象一下其他处于相同位置的穷人。为可怜的未来——你写你的代码。通过使一切尽可能明显来帮助未来的你。想象一下未来——你不记得你在做什么。
拥有生成计算的脚本并记录它们并使其可读几乎总是更好。为此,还要删除您不需要的变量,这将帮助您保持纪律性,使所有内容再次可生成。
将相关变量保存在数据框或列表中(并在列表中保存相关的矩阵、数据框等,当它们超过几个时),并用解释它们是什么的名称命名所有数据框列和列表组件.
只是不要使用晦涩的名称,例如x1
. 从计算和分析的角度来看,花一点时间查看您的变量并理解它所代表的内容是很重要的。它的名字自然应该是它所代表的。例如,如果它是年龄向量,为什么不命名呢age
?如果它是一个大名字,你可以减少它,但试着让它如此——正如格伦所说的——未来——你会明白现在——你在说什么。
如果您想创建备份对象,我的建议是在其名称前加上一个点 ( ),这样它对(但对).
不可见。我经常使用这个,但有时我希望能够一直看到备份对象,所以我附加了名称。ls()
ls(all.names = TRUE)
.bak