我编写了2个函数来存档来自R的对象(这些函数对我来说非常重要),如果对象是类lm
,则归档用于执行此模型的数据。
我的代码如下:
archive_object_and_data <- function(object, archiveData = TRUE, rememberName = TRUE){
object <- deparse(substitute(object))
md5hash <- digest(object)
dir <- paste0(getwd(), "/")
dir.create(file.path(dir, md5hash), showWarnings = FALSE)
if (rememberName){
save( file = paste0(dir, md5hash, "/obj.rda"), ascii = TRUE, list = objectName,
envir = parent.frame(2))
}else{
save( file = paste0(dir, md5hash, "/obj2.rda"), ascii = TRUE, list =objectName,
envir = parent.frame(5))}
if ( archiveData )
archiveDataFromObj( object, md5hash, changeBool = FALSE )
}
#
archiveDataFromObj <- function (object, md5hash, changeBool = TRUE)
UseMethod("archiveDataFromObj")
archiveDataFromObj.default <- function(object, md5hash, changeBool = TRUE) {
}
archiveDataFromObj.lm <- function(object, md5hash, changeBool = TRUE) {
extractedDF <- object$model
md5hashDF <- archive_object_and_data(extractedDF, rememberName = changeBool)
}
我要归档的对象如下所示:
data( iris )
test_data <- iris[,-5]
model2 <- lm(Sepal.Length~. , data=test_data)
archive_object_and_data(model2)
错误如下所示:
Error in save(file = paste0(dir, md5hash, "/obj2.rda"), ascii = TRUE, :
object ‘extractedDF’ not found
6 stop(sprintf(ngettext(n, "object %s not found", "objects %s not found"),
paste(sQuote(list[!ok]), collapse = ", ")), domain = NA)
5 save(file = paste0(dir, md5hash, "/obj2.rda"), ascii = TRUE,
list = objectName, envir = parent.frame(5))
4 archive_object_and_data(extractedDF, rememberName = changeBool) at archiveDataFromObj.R
3 archiveDataFromObj.lm(object, md5hash, changeBool = FALSE) at archiveDataFromObj.R#1
2 archiveDataFromObj(object, md5hash, changeBool = FALSE) at archive_object_and_data.R
1 archive_object_and_data(model2)
any1可以帮我解决这个问题吗? 看起来该行存在问题:(
}else{
save( file = paste0(dir, md5hash, "/obj2.rda"), ascii = TRUE, list =objectName,
envir = parent.frame(5))}