3

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

4

2 回答 2

4

将设置options而不是变量存储在.GlobalEnv. 您可以options用作键值存储或分配例如 alist到一个键(可能是您的包的名称),就像我在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
于 2013-04-16T15:07:52.897 回答
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"

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

于 2013-04-17T06:58:10.223 回答