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

问题描述 投票:2回答:1

我试图理解这个包(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不会导入/重新加入get-current-forecast.R

这是怎么回事?所有子功能是否可用于同一包装中的其他功能?

r r-package roxygen2
1个回答
2
投票

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

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

例如,

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

  bar(y)
}

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

© www.soinside.com 2019 - 2024. All rights reserved.