【发布时间】:2018-10-10 19:19:41
【问题描述】:
我正在寻求有关 R 文档中演示的实践的指导,即创建与函数参数同名的变量,或为数据框及其列之一赋予相同的名称。后者可能导致这样的代码:
delay <- filter(delay(delay >= mean(delay)))
这让我感到困惑。
来自 data.frame {base} 帮助页面上的示例,fac = fac:
(L3 <- LETTERS[1:3])
# "A" "B" "C"
(fac <- sample(L3, 10, replace = TRUE))
# "C" "C" "B" "A" "B" "A" "B" "A" "C" "C"
(d <- data.frame(x = 1, y = 1:10, fac = fac))
# x y fac
# 1 1 C
# 1 2 C
# . . .
Refac = fac:用相同的名称命名多个对象/元素是否被认为是一种好习惯?这似乎可能令人困惑——我最初认为fac 是一个命名参数,然后去寻找它,但无济于事——但也许我错过了它的好处,而且这种方式实际上更简单。
【问题讨论】:
-
基于意见。在我看来,分配与函数名称相同的对象名称是不好的做法。你只是在为自己和他人制造混乱。参数名称真的没那么重要。
-
@Rich Scriven,这是我的想法。对我来说,理解 bc 需要更长的时间,我试图弄清楚哪个是 arg,哪个是 df,哪个是 var。我试图弄清楚是否有充分的理由采用这种做法。如果不是,为什么 Hadley 等人以这些为例?
-
@RyanD,公平点。
-
我认为这取决于。变量名的目的是提供关于存储值是什么的简洁信息。在
factor(..., levels = levels)的情况下,一个小例子可能就足够了,但是如果您有多个levels向量,则需要更具体地命名它们。同样,read.csv(file)是模棱两可的,而read.csv(h20_temp_data)不是。 -
@Mako212,关于通用示例的要点。然而,“非常清楚”,在旁观者的眼中。我的另一个例子(
delay,delay,...)是从 Hadley 的 R4DS 书中略微修饰的,作为学习者,我的眼球在困惑中从同名对象跳到对象。我不清楚。但是您的观点可能是打算(对学习者)非常清楚!
标签: r object namespaces