允许用户更改R包全局变量

时间:2016-08-26 22:18:20

标签: r r-package

我想使用以下行为创建一个名为my_package的R包:

library(my_package)
my_package::get_username() # should throw error "no username set"
my_package::set_username("john doe")
my_package::get_username() # should print "john doe"

我不知道该怎么做。我尝试在R文件test.R中使用以下内容并使用source('test.R')它可以工作。但我不知道在创建包时采用这种方法的正确方法是什么。

pkg_env <- new.env()
pkg_env$username <- NULL

set_username <- function(username) {
    pkg_env$username <- username
}

get_username <- function() {
    if (is.null(pkg_env$username)) {
        print("ERROR")
    } else {
        print(pkg_env$username)
    }
}

1 个答案:

答案 0 :(得分:0)

执行所需操作的最简单方法是使用options。例如,在devtools中,您可以使用此technique设置各种选项 - package?devtools

如果要使用环境,则需要在加载包时使用.onLoad函数

创建环境