首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R函数中的环境管理

R函数中的环境管理
EN

Stack Overflow用户
提问于 2016-09-12 23:10:05
回答 1查看 72关注 0票数 0

我使用了两个函数:

代码语言:javascript
复制
csvExport <- function(data, path = "", enc = 'utf8'){
    filename <- paste(data, "csv", sep=".")
    if (path == ""){
      name <- filename
    } else {
      name <- paste(path, '/', filename, sep="")
    }
    x <- get(data) # get the object
    con <- file(name, encoding = enc)
    write.csv2(x, file = con, row.names=FALSE, quote = TRUE)
  }  
}

代码语言:javascript
复制
listExport <- function(myList){
  for(n in names(myList)){
    assign(n, myList[[n]])
    csvExport(n)
  }
}

出于测试目的:

代码语言:javascript
复制
test <- function(){
  a <- data.frame(x = c(1,2,3,4,5), y = c(5,4,3,2,1))
  b <- data.frame(x = c(1,2,3,4,5), y = c(5,4,3,2,1))
  myList <- list(a1 = a, b1 = b)
  listExport(myList)
}

现在,调用test()会给出一个"Object a1 not found“错误。我假设这是某种乱七八糟的环境,因为错误发生在行中

代码语言:javascript
复制
x <- get(data)

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2016-09-13 00:25:33

你有很多选择。一种方法是让你的csvExport函数接受data.frame而不是data.frame的名字,并在csvExport(get(n))中执行listExport,我相信这会在正确的环境中进行,除非将缺省值分配给全局,我不认为它会这样做。或者干脆放弃整个get,直接将myList[[n]]传递给csvExport

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39453505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档