假设我有一个xgboost
模型,我想存储该模型以供以后重用。另外,为了将来的方便,我将其他信息存储到对象中,其中之一是data
子句,它以data.table
的形式存储,即
stored_data <- as.data.table(data)
model$data <- stored_data
保存和加载模型的工作原理,即
save(model, 'data/model.rda')
但是,$data
在重新附加对象后没有保留:
load('data/model.rda')
model$data
R> NULL
另一方面,
model$data <- as.data.frame(stored_data)
似乎可以工作,但是找出data.table
对象(或xgboost
对象的问题是什么,不确定在这里是什么原因)很有趣。
附带说明:我坚持使用.rda
文件,因为我将它们用于延迟加载到包中,即
.onLoad <- function(lib, pkg){
utils::data(model, package = pkg, envir = parent.env(environment()))
}
使用.rds
代替.rda
会很好,但是我不确定该怎么做。
编辑:
奇怪的是,从函数内部调用时为null。也就是说,model$data
在全局环境中返回一个帧,但是当转到debugonce(a_function)
时,从调试model$data
内返回NULL
。模型对象是相同的,我已经在comment(model)
中添加了时间戳。