【问题标题】:Creating a folder inside a function在函数内创建文件夹
【发布时间】:2012-09-11 06:12:50
【问题描述】:

所以我想使用 R 自动为我正在分析的数据集创建一个文件夹。由于懒惰,正在编写一个函数来创建此文件夹、分析数据并将结果存储到该文件夹​​中,以便以后查看。

现在,如果我尝试使用库(robustbase)中的飞机数据:

setwd("C:/Users/Admin/Desktop/")
analysis<-function(dataset,other_bit_and_pieces){
paste("dir.create(",dataset,")",sep="")
}

analysis(aircraft)

我收到一条错误消息,指出 aircraft 不存在,或者(如果我加载库),它会吐出 "dir.create(c( all the data from aircraft))"

我应该如何编写,以便每次更改数据集时都会使用数据集名称创建一个新文件夹?

【问题讨论】:

  • Albort,这不是懒惰。这就是智能:让软件为您完成无聊、重复的任务!

标签: r directory


【解决方案1】:

一般的 R 习惯用法是deparse(substitute(....))

analysis <- function(object, create = FALSE){
  dirname <- deparse(substitute(object))
  if(create) {
      dir.create(dirname)
  }
  dirname
}

> mydata <- data.frame(x=1:10)
> analysis(mydata)
[1] "mydata"

请注意,我将函数更改为不自动创建目录,以防人们正在测试并且这会破坏现有目录。为了证明它有效,我让它返回dirname。实际上,从if() 开始,您将不需要任何东西。

【讨论】:

    【解决方案2】:

    据我所知,以下内容将起作用

    mydata <- data.frame(x=1:10)
    
    analysis <- function(object){
      dir.create(as.character(as.list(match.call())[2]))
    }
    
    analysis(mydata)
    # will create a directory 'mydata' as a subdirectory of the current working directory.
    

    查看?match.call 了解其工作原理!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多