我在RStudio v.1.0.1.153中创建了一个新项目作为“R包”。默认情况下,这样一个新的R包项目带有包含模板函数
的文件hello.R
hello <- function() {
print("Hello, world!")
}
只需构建并重新加载包(Ctrl + Shift + B)即可访问,然后在另一个R会话中只需加载构建的包并运行该函数:
> library(mylibrary)
> hello()
[1] "Hello, world!"
现在我想将我的功能组织到包中的几个文件中。我使用另一个函数将新文件methods.R
添加到包的.\R\
子目录中:
helloYouToo <- function() {
print("Hello you too!")
}
但是,当我重建包并重新加载库时,我无法访问该函数:
> library(mylibrary)
> helloYouToo()
Error in helloYouToo() : could not find function "helloYouToo"
我有几个问题。我应该如何
hello.R
文件),以便将包含在其中的文件和函数包含在包中,并且methods.R
中)?答案 0 :(得分:0)
正如@MrFlick建议的那样,我设法通过安装devtools
和roxygen
(带有依赖项)来将功能分成几个文件。
在重建之后,程序包使其他文件中的新功能可供加载程序包的用户使用。但是,必须重新启动R会话才能使更新的函数定义可用:
Restarting R session...
> library(mylibrary)
> helloYouToo()
[1] "Hello you too!"
甚至可以在包中定义一个使用两个单独文件中定义的函数的函数:
helloDouble <- function() {
hello()
helloYouToo()
}
导致
Restarting R session...
> library(mylibrary)
> helloDouble()
[1] "Hello, world!"
[1] "Hello you too!"
我不需要触摸NAMESPACE文件,因为它与
一样通用exportPattern("^[[:alpha:]]+")
允许我在包中创建的所有新功能可供包用户使用。