3

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

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

4

2 回答 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()

于 2012-09-11T07:11:34.263 回答
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这是如何工作的!

于 2012-09-11T06:29:20.530 回答