R:我应该使用与函数参数相同的名称命名变量吗?

标签 r object namespaces

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

3年前关闭。




Improve this question




我正在寻求有关 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
# . . .

回复 fac = fac :用相同的名称命名多个对象/元素是否被认为是一种好习惯?这似乎可能令人困惑 - 我最初认为 fac是一个命名参数,并继续寻找它,但无济于事 - 但也许我错过了好处,而且实际上这种方式更直接。

最佳答案

将我的评论综合成一个答案,除了非常简单的示例之外,您绝对不应该将变量命名为与函数参数相同的名称。

好的变量名对于编写可读、可维护的代码至关重要。

示例 1(坏)

f1 <- read.csv(file = file, col.names = col.names) 

示例 2(好)
h2o_data <- read.csv(file = h2o_temp_export, col.names = h2otemp_headers)

如果您没有编写示例 1 中的代码,那么在不通读程序的其他部分或测试单个代码行的情况下,就不会指示该代码行的作用。

在示例 2 中,即使您从未见过代码,您也会知道 h2o_data包含来自 h2o_temp_export 的 .csv 数据,以及 col.names已设置为特定于此数据集的值。

现在让我们假设您需要按照示例 1 添加第二个数据集,假设您有一个包含不同列的不同文件,您可以编写:
f2 <- read.csv(file1, col.names = col.names1) 

这是完全模棱两可的,并没有告诉您有关 f1 的任何信息或 f2 .更糟糕的是,你可以写在 col.names将其设置为 f2 的新值, 而不是使用 col.names1 .

以下示例 2:
co2_data <- read.csv(file = co2_concentration_export, 
  col.names = co2_concentration_headers)

所以除非你正在编写一个最小的例子来突出一段代码的特定用途,比如那些 data.frame例如,您应该始终为传递给函数的其他对象使用特定的、有用的名称。

编辑:另见 Hadley's Style Guide

关于R:我应该使用与函数参数相同的名称命名变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747362/

相关文章:

r - 在 R 中处理大整数

javascript - 如何在javascript中访问多维对象?

.net - .NET Web 应用程序中的 OOP 性能

根据条件返回列名

r - 加速填充函数R

根据条件替换为列中的多个元素

java - 按所有对象包含的字符串值对 Set 中的对象进行排序

c++ - 使用 namespace 行为背后的基本原理

c# - C# 中的命名空间作用域

php - 尝试使用我创建的命名空间时出错