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