包中的R source命令

时间:2014-04-02 11:18:57

标签: r package

如何在r-packages中获取我的函数文件?

示例(我的包的树目录,包名是" pack"):

- man (help files)
- R
 -- pack.function1.R
 -- pack.function2.R
 -- ...
- myfunctions
 -- functions.R
DESCRIPTION
NAMESPACE
...


functions.R
foo <- function(bar) {
   return(bar)
}


pack.function1.R
...
source("myfunctions/functions.R")
foo(bar)

我试过&#34; myfunctions / functions.R&#34;,&#34; /myfunctions/functions.R" ;,&#34; ../ myfunctions / functions.R&#34;但确实有效。

正确的源路径如何?这是我第一次尝试使用R套装。

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试将程序包中的R代码文件组织到不同的(子)文件夹中。

R包中不支持。

如果您安装了软件包,则可以从软件包中的函数查询安装路径:

system.file(package = "data.table")
[1] "/home/ryoda/R/x86_64-pc-linux-gnu-library/3.4/data.table"

但是如果你查看已安装软件包的R文件夹,你将找不到你的R代码,而是找到所有R代码的“预编译”图像(参见* .rdb和* .rdx文件)。

因此,您无法在R中获取其他R源代码文件。

有关文件夹结构的详细信息,请参阅:https://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages

PS:(至少)有一个“后门”:

如果将软件包的R文件放入名为inst的软件包根目录下的子文件夹中,inst子文件夹的内容将以递归方式复制到安装目录,然后可以是源文件(使用system.file(package = getPackageName())从包中检索安装路径。

但这远远超出了套餐的运作方式。

有效的例外可能是:提供预配置的配置文件,这些文件是纯R文件创建变量......