环境中的变量名称

时间:2014-07-20 10:01:15

标签: r

我编写了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))}

0 个答案:

没有答案