所以我想用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))"
我应该如何编写此文件,以便每次更改数据集时都使用数据集名称创建新文件夹?
答案 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
这是如何运作的!