gpt4 book ai didi

r - 用R开头的点声明变量

转载 作者:行者123 更新时间:2023-12-03 15:22:16 24 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

4年前关闭。




Improve this question




问题的关键与标题相同,

有人知道或可以提供有关 R 中“.variables”的信息?

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

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

所以,重点是定义:
  • 这是什么?
  • 有什么用?
  • 一些例子
  • 最佳答案

    R 中的前缀点符号指定不能直接通过 ls 访问的隐藏对象除非你使用 ls(all.names = TRUE) .这样做的目的是为 R 的开发者准备的包有某种方式向用户隐藏其功能的实现细节,使他们的包对用户更友好,如 R-bloggers 上更完整的描述。 (并在链接腐烂的情况下在此处简要引用):

    Lets say that you are developing the function use_me(). If the details you want the users to control are actually arguments of other functions used inside use_me(), then you can simplify your function by using the ... argument. This argument is very well explained at The three-dots construct in R (Burns, 2013). It is very useful and can greatly simplify your life as a developer. Plus, it reduces the length of your help pages, thus making your package more user friendly.

    However, if some of the details in use_me() are not arguments to other functions, then the common strategy is to write two functions. One is a low level function with arguments for all the details which might or might not export. Then, you write a second function that is a wrapper for the low level function and pre-specifies values for all the details. See the next minimal example:

    # 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 .

    关于r - 用R开头的点声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41553480/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com