包中的功能是否共享相同的子功能?
Do functions within a package share the same sub-functions?
我想了解这个包(darksky
,在此处找到:https://github.com/hrbrmstr/darksky)是如何工作的。
它在 R 文件夹中包含这两个脚本:
aaa.R
,以及
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
中可见。
我想了解这个包(darksky
,在此处找到:https://github.com/hrbrmstr/darksky)是如何工作的。
它在 R 文件夹中包含这两个脚本:
aaa.R
,以及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
中可见。