我正在尝试了解此软件包(darksky
,在此处找到:https://github.com/hrbrmstr/darksky)的工作。
它在R文件夹中包含这两个脚本:
-
aaa.R
, -
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
中可见。