包中的功能是否共享相同的子功能?

Do functions within a package share the same sub-functions?

我想了解这个包(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 不是 imported/refferred 到 get-current-forecast.R.

效果如何?是否所有子功能都可用于同一包中的其他功能?

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

但是,在另一个函数中定义的函数是不同的。 R 不会在包命名空间中看到和注册它们。它们只能在封闭函数中使用。

例如,

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

  bar(y)
}

如果 foo 在包中的某个 .R 文件中定义,函数 foo 将可见,但 bar 仅在 foo 中可见。