我试图理解这个包( _________
| | |
|1 | 2 |
|__|______|
| 3 | 4 |
|____|____|
,在这里找到:https://github.com/hrbrmstr/darksky)是如何工作的。
它包含R文件夹中的这两个脚本:
darksky
和aaa.R
前者(get-current-forecast.R
)包含一个名为aaa.R
的子功能。这是后者(convert_time
)调用的,似乎有效但get-current-forecast.R
未导入/ {refferred aaa.R
。
这是如何工作的?所有子功能是否可用于同一包装中的其他功能?
答案 0 :(得分:2)
套餐与在交互式会话中获取R文件的工作方式相同。包中每个.R文件中定义的所有函数都在包的命名空间中注册,该命名空间在运行library(foo)
时附加。因此,当包中的函数调用其他函数时,R首先在该包的命名空间中查找该名称的函数。
但是,在另一个函数内定义的函数是不同的。 R不会在包名称空间中看到并注册它们。它们仅在封闭功能中可用。
例如,
foo <- function(x){
y <- x+1
bar <- function(z){
z+1
}
bar(y)
}
如果在包中的某个.R文件中定义了foo
,则函数foo
将可见,但bar
仅在foo
内可见。