当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在R的开头用一个点声明变量》经验,为你挑选了1个好方法。

问题的症结与标题相同,

有人知道或者可以提供有关R中".variables"的信息吗?

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

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

所以,重点是定义:

这是什么?

什么用于?

一些例子

HFBrowning.. 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这种情况下,将对象隐藏在环境中)并没有使用符号的任何其他结果(根据这篇文章的评论)至少,自己扫描文档后).

有关实际使用中的示例,请参阅colSums或的帮助trace.



1> HFBrowning..:

前缀点表示法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这种情况下,将对象隐藏在环境中)并没有使用符号的任何其他结果(根据这篇文章的评论)至少,自己扫描文档后).

有关实际使用中的示例,请参阅colSums或的帮助trace.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有