【问题标题】:Convert name of dataframe to string within a function在函数中将数据框的名称转换为字符串
【发布时间】: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 的名称才能创建列表。

标签: r function


【解决方案1】:

第一个功能确实有效,谢谢,抱歉。

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多