问题的症结与标题相同,
有人知道或可能提供有关" .variables"的信息。在R?
.variable<-1
class(.variable)
[1] 1
[1] "numeric"
据我所知,它就像一个隐藏的变量,因为它不会出现在R studio的全球环境中。
所以,重点是定义:
答案 0 :(得分:8)
R
中的前缀点表示法指定了一个隐藏的对象,除非您使用ls
,否则无法通过ls(all.names = TRUE)
直接访问该对象。这样做的目的是让R
个软件包的开发人员有一些方法可以隐藏用户的功能实现细节,使他们的软件包更加用户友好,如R-bloggers更全面地描述(并引用这里简要介绍链接腐烂):
让我们说你正在开发函数use_me()。如果您希望用户控制的详细信息实际上是use_me()中使用的其他函数的参数,那么您可以使用...参数来简化您的函数。这个论点在R中的三点构造中得到了很好的解释(Burns,2013)。它非常有用,可以大大简化您作为开发人员的生活。此外,它还缩短了帮助页面的长度,从而使您的包装更加用户友好。
但是,如果use_me()中的某些细节不是其他函数的参数,那么通常的策略是编写两个函数。一个是低级函数,带有可能导出或可能不导出的所有细节的参数。然后,编写第二个函数,它是低级函数的包装器,并为所有细节预先指定值。请参阅下一个最小示例:
# Don't export this function
.use_me <- function(arg1, arg2, verbose = TRUE) {
if(verbose) message(paste(Sys.time(), 'working'))
pmax(arg1, arg2)
}
#' @export
use_me <- function(arg1, ...) {
.use_me(arg1, 0, ...)
}
这与Python使用单个下划线非常类似,以防止自动从包中加载对象。在这两种情况下,这种做法似乎都是一种命名惯例 - 在其指定用途之外(在R
的情况下,将对象隐藏在环境中)并不存在任何其他使用结果符号(至少根据this post的评论,以及自己扫描文档后)。
有关实际使用中的示例,请参阅colSums
或trace
的帮助。