我正在进行数据分析,并创建了一个存储我的vignette和数据的包,正如这里所解释的那样。
我想设置一些变量,使它们对所有包函数都可用。
这些变量定义了:数据集的路径,测量特征(例如探针位置),物理常数等。
我已经阅读过,将这些变量存储在环境中是一种建议的方法。
问题是,我应该把创建环境的脚本放在哪里?
我考虑把它放在onLoad方法中,以确保在加载包时执行它。
我正在进行数据分析,并创建了一个存储我的vignette和数据的包,正如这里所解释的那样。
我想设置一些变量,使它们对所有包函数都可用。
这些变量定义了:数据集的路径,测量特征(例如探针位置),物理常数等。
我已经阅读过,将这些变量存储在环境中是一种建议的方法。
问题是,我应该把创建环境的脚本放在哪里?
我考虑把它放在onLoad方法中,以确保在加载包时执行它。
如果您将它放置在.onLoad
函数(而不是方法)中,您将需要使用assign
函数来确保环境在您的程序包命名空间中创建。
.onLoad <- function(libname, pkgname)
{
# ...
assign("myPackageEnvironment", new.env(), parent.env())
# ...
}
但你也可以将它放在开源代码中:
myPackageEnvironment <- new.env()
非正式地说,你可以将你的包中的.R文件视为逐个“source”到你的包命名空间环境中。因此,在打开代码中运行的任何语句都会直接在那里创建对象。
getOption
检索每个选项,或者将它们定义为环境变量,并使用Sys.getenv
检索每个变量,并在.Rprofile
中定义它们的值。这将使您的软件包独立于您机器上特定的路径。如果只需要半独立,则可以硬编码默认配置,以便最初无需在.Rprofile
中设置任何内容,但仍然可以在不修改软件包的情况下更改它们。 - G. Grothendieck