r-在软件包中执行功能共享相同的子功能



我正在尝试了解此软件包(darksky,在此处找到:https://github.com/hrbrmstr/darksky)的工作。

它在R文件夹中包含这两个脚本:

  1. aaa.R
  2. get-current-forecast.R

前者(aaa.R)包含一个称为convert_time的子函数。这是由后者调用的(get-current-forecast.R),似乎有效,但aaa.R并未导入/refferref get-current-forecast.R

这是如何工作的?同一软件包中的其他功能是否可以使用所有子功能?

软件包在交互式会话中的工作与采购R文件的工作不相同。软件包中每个.r文件中定义的所有函数均在软件包的命名空间中注册,该命名空间在运行library(foo)时将附加。因此,当软件包中的功能调用其他功能时,R首先在该软件包的名称空间中以该名称的函数查看。

但是,另一个函数内定义的函数是不同的。R不会在软件包名称空间中看到并注册。它们仅在封闭功能中可用。

例如,

foo <- function(x){
  y <- x+1
  bar <- function(z){
    z+1
  }
  bar(y)
}

如果在软件包中的某些.r文件中定义了foo,则该函数foo是可见的,但是bar仅在foo中可见。

相关内容

  • 没有找到相关文章

最新更新