嵌套在xgboost对象中的data.table对象在另存为.rda时不会加载

时间:2018-10-17 10:31:51

标签: r data.table xgboost

假设我有一个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)中添加了时间戳。

0 个答案:

没有答案