问题的症结与标题相同,
有人知道或者可以提供有关R中".variables"的信息吗?
.variable<-1
class(.variable)
[1] 1
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)
据我所知,它就像一个隐藏的变量,因为它不会出现在R studio的全球环境中.
所以,重点是定义:
前缀点表示法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, ...)
}
Run Code Online (Sandbox Code Playgroud)
这与Python使用单个下划线非常类似,以防止自动从包中加载对象.在这两种情况下,这种做法似乎都是一种命名约定 - 在它们指定的用途之外(在R这种情况下,将对象隐藏在环境中)并没有使用符号的任何其他结果(根据这篇文章的评论)至少,自己扫描文档后).
有关实际使用中的示例,请参阅colSums或的帮助trace.