我试图理解这个包(darksky
,在这里找到:https://github.com/hrbrmstr/darksky)是如何工作的。
它包含R文件夹中的这两个脚本:
aaa.R
,和get-current-forecast.R
前者(aaa.R
)包含一个名为convert_time
的子函数。这被后者(get-current-forecast.R
)称为并且似乎有效,但aaa.R
不会导入/重新加入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
中可见。