在R中的两个包之间共享变量

时间:2013-04-16 12:07:59

标签: r variables package

我在R中创建了2个包。一个包中的变量用于另一个包的函数中。所以我在全局范围内声明变量var <<- "value"。现在每个功能都正常运行。但现在每个人都可以访问这些变量。如果任何用户更改了变量的值,那么很多函数都无法正常工作。是否可以创建变量并仅在某些特定包中使用该变量?

2 个答案:

答案 0 :(得分:4)

将设置存储在options中,而不是.GlobalEnv中的变量。您可以使用options作为键值存储空间或指定例如一个list到一个键(也许是你的包名)就像我在pander package中所做的那样。如您所见,我甚至创建了一些辅助函数来更新/查询这些列表元素。

快速举例:

> options(foo = list(a = pi, b = 1:3))
> getOption('foo')
$a
[1] 3.141593

$b
[1] 1 2 3

> getOption('foo')['a']
$a
[1] 3.141593

答案 1 :(得分:1)

可以通过创建新环境来实现。 http://digitheadslabnotebook.blogspot.in/2011/06/environments-in-r.html

>cacheEnv <- new.env()
> url <- "http://mytext.com"
> file <- "This is the content I downloaded"
> cacheEnv <- new.env()
> assign(url, file, envir=cacheEnv)
> get(url, envir=cacheEnv)
[1] "This is the content I downloaded"

用户无法直接编辑变量。他们只能使用环境名称编辑变量。