在函数内创建文件夹

3

我希望使用R语言自动创建一个文件夹来存放正在分析的数据集。为了方便起见,编写一个函数来创建这个文件夹,分析数据,并将结果存储到该文件夹中,以便稍后查看。

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

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

analysis(aircraft)

我要翻译的内容是关于it技术的。当我更改数据集时,我要创建一个新文件夹以包含数据集名称。但是,我遇到了错误消息,说aircraft不存在,或者(如果我加载了库)它会输出"dir.create(c( all the data from aircraft))"。请问应该如何编写代码来解决这个问题?


1
阿尔伯特,那不是懒惰。那是智慧:让软件为你完成无聊、重复的任务! - Carl Witthoft
2个回答

4
这个通用的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()开始的任何内容。

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 以了解其工作原理!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接