R包内的对象状态
我正在构建一个R包,它可以获得这样的数据R包内的对象状态,r,r-package,R,R Package,我正在构建一个R包,它可以获得这样的数据 getdata <- function(uri ="dummyuri.csv"){ httr::GET(url = uri) } getdata在local()调用中创建getdata函数,并让它将值写入本地环境。比如说, getdata <- local({ cache <- NULL cachedURI <- NULL function(uri ="dummyuri.csv") { if (is.nu
getdata <- function(uri ="dummyuri.csv"){
httr::GET(url = uri)
}
getdata在local()
调用中创建getdata
函数,并让它将值写入本地环境。比如说,
getdata <- local({
cache <- NULL
cachedURI <- NULL
function(uri ="dummyuri.csv") {
if (is.null(cache) || cachedURI != uri) {
cache <<- httr::GET(url = uri)
cachedURI <<- uri
}
cache
}
})
getdata将最后一个调用作为一个不可见的变量存储在全局环境中,这显然是合法的,但作为一个用户,我觉得不太理想。更改包的环境可能是不可能的,不过您可以使用tempfile,将路径作为环境变量存储在选项中。我认为用看不见的变量污染全球环境是不可能的。。。如果取消附加,则程序包可能不会删除所述变量。这可能很幼稚,但我认为封装是包的关键;我想,您可以指定使用.onUnload
删除它。谢谢,我会看一看。我仍然认为这通常是危险的,因为它需要包成功卸载,并且作者要跟踪全局环境中的所有对象。哦!这里有一个更好的方法: