R包中的对象状态
Object State inside of R package
我正在构建一个像这样获取数据的 R 包。
getdata <- function(uri ="dummyuri.csv"){
httr::GET(url = uri)
}
这是一个昂贵的调用,所以我想在第一次调用后缓存数据。因此,除非您明确声明,否则您会在第一次调用后从包环境中获取它的本地副本。
所以我的目标是将这个对象包含在包环境中。我将如何以符合 cran 的方式实现这一目标?
我花了很多时间 looking up environments in advanced r 但似乎无法理解如何实现这一目标。
在 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
的环境设置为 local
创建的环境,其父级是包环境。你可以修改那个本地的而不用担心任何人的投诉。
我正在构建一个像这样获取数据的 R 包。
getdata <- function(uri ="dummyuri.csv"){
httr::GET(url = uri)
}
这是一个昂贵的调用,所以我想在第一次调用后缓存数据。因此,除非您明确声明,否则您会在第一次调用后从包环境中获取它的本地副本。
所以我的目标是将这个对象包含在包环境中。我将如何以符合 cran 的方式实现这一目标?
我花了很多时间 looking up environments in advanced r 但似乎无法理解如何实现这一目标。
在 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
的环境设置为 local
创建的环境,其父级是包环境。你可以修改那个本地的而不用担心任何人的投诉。