R包中的源文件
我正在构建一个非常基本的R包供我自己使用 有些文件需要另一个文件中的函数 因此,R文件尝试源代码为R文件。这在构建过程中失败。都不是R包中的源文件,r,R,我正在构建一个非常基本的R包供我自己使用 有些文件需要另一个文件中的函数 因此,R文件尝试源代码为R文件。这在构建过程中失败。都不是 source("./util.R") 也不是 工作。R找不到该文件 所有文件都在包的R目录中 如何调用该文件以确保找到它 谢谢,我认为包中不需要源代码(source),因为必须对您创建的对象进行某种“惰性评估”(只是解析),延迟评估,直到您真正调用包的函数(这是一个库=等待从外部调用的函数集合) Hadley Wickham在他的书的“顶级代码”部分解释了背景
source("./util.R")
也不是
工作。R找不到该文件
所有文件都在包的R目录中
如何调用该文件以确保找到它
谢谢,我认为包中不需要源代码(source
),因为必须对您创建的对象进行某种“惰性评估”(只是解析),延迟评估,直到您真正调用包的函数(这是一个库=等待从外部调用的函数集合)
Hadley Wickham在他的书的“顶级代码”部分解释了背景
为了测试这种行为,我使用RStudio创建了一个包,并添加了两个调用另一个文件函数的文件(如循环引用):
文件“f1.R”:
f1 <- function() {
print("f1")
f2()
}
f4 <- function(a) {
print(paste("f4:", a))
}
# f2.R
f2 <- function() {
print("f2")
}
f3 <- function(a) {
print(paste("f3:", a))
f4(a)
}
摘要:包中不需要
源代码
(直到您想在不构建包的情况下测试代码文件!)。构建包时,包中的所有函数都可用于该包中的所有其他函数。您根本不需要在包中使用源代码,真的。谢谢。我有点尴尬。当我尝试这样做时,我在importIntoEnv(pkgenv,exports,nsenv,exports)中遇到了错误:无法向锁定的环境添加绑定
任何线索,这是怎么回事?您是否在新创建的包(哪个R版本?)中使用了我的示例代码,或者您使用了自己的代码和包?如果是后者,请提出一个新问题,包括一个最小的可复制示例。
# f2.R
f2 <- function() {
print("f2")
}
f3 <- function(a) {
print(paste("f3:", a))
f4(a)
}
> library(testpackage)
> testpackage:::f1() # ::: allows calling a hidden function that was not exported. You could also create a NAMESPACE file instead
[1] "f1"
[1] "f2"
> testpackage:::f3("hello")
[1] "f3: hello"
[1] "f4: hello"
>