【发布时间】:2020-05-14 13:45:39
【问题描述】:
我有许多数据框,我想通过一个函数运行该函数,该函数创建一个目录,该目录的名称作为文件夹名称。
我试过了:
Create_dir = function(data){
filename = deparse(substitute(data))
dir.create(filename, showWarnings = FALSE)
}
和
Create_dir = function(data){
list = lst(data, "x")
filename = names(list)[1]
dir.create(filename, showWarnings = FALSE)
}
还有一些其他方法在函数之外都可以很好地工作,但在函数内部,它们要么将文件夹命名为“数据”,要么不起作用,因为文件名等同于数据框中所有数据的字符串列表。
对此的任何帮助将不胜感激。
【问题讨论】:
-
如果所有数据框都在一个列表中,这很简单,并且您使用列表的名称作为文件的名称。否则这很难——很难笼统。如果您有“许多数据框”,我假设您不想单独写出
Create_dir(mtcars); Create_dir(iris); Create_dir(diamonds); ...,因此请考虑如何迭代您的数据,因为这会影响答案。 -
你的第一个函数对我有用。
TestFolder <- data.frame()和Create_dir(TestFolder)在我的工作目录中创建了一个名为“TestFolder”的文件夹。也许您的意思是,“这些函数在从全局环境调用时有效,而不是从其他函数中调用”? -
嗨 Gregor,我打算在列表上使用 for 循环:for(i in list){ Create_dir(i)}
-
Ian,谢谢,其实也一样,那它一定是被函数中的一些其他代码挡住了。我再看看
-
与从
names(list)(例如sapply(names(list),dir.create))创建目录相比,这种方法有什么优势?如果列表未命名,那么您必须拥有data.frames的名称才能创建列表。