在R的开头用一个点声明变量

时间:2017-01-09 17:22:45

标签: r

问题的症结与标题相同,

有人知道或可能提供有关" .variables"的信息。在R?

.variable<-1
class(.variable) 
[1] 1
[1] "numeric"

据我所知,它就像一个隐藏的变量,因为它不会出现在R studio的全球环境中。

所以,重点是定义:

  • 它是什么?
  • 用于什么?
  • 一些例子

1 个答案:

答案 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的评论,以及自己扫描文档后)。

有关实际使用中的示例,请参阅colSumstrace的帮助。