在函数内创建文件夹

时间:2012-09-11 06:12:51

标签: r directory

所以我想用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))"

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

2 个答案:

答案 0 :(得分:4)

一般的习惯用语是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()以后的任何内容。

答案 1 :(得分:3)

根据我的理解,以下内容将起作用

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这是如何运作的!