使用walk和purrr创建文件夹

时间:2017-02-24 09:38:17

标签: r purrr

我正在尝试创建一个在R中设置工作环境的小功能 最后它只是一个函数,我可以指定我想要设置的文件夹结构 我想借此机会学习purrr

以下是我在项目中设置的代码,因此文件路径是固有的但我显然没有正确使用它

# Setup Project Folders
library('purrr')
my_folders <- data.frame(folder = c('scripts','sql','figs','results','data','ref_data','reports'))
walk(.f = dir.create(file.path(), showWarnings = FALSE),.x =my_folders)

有人可以帮忙吗?

谢谢

1 个答案:

答案 0 :(得分:1)

此处的问题是dir.create未向量化,但是,数据框上的walk会将1列数据框传递给dir.create,这会导致您看到的错误。

我的方法是使用by_row确保将长度为1的元素传递给dir.create,并强制强制为字符向量:

my_folders %>%
  by_row(function(x) dir.create(as.character(x),
         showWarnings = FALSE), .collate = "rows",
         .to = "success")

仅当您的数据框具有单个列时,此选项才有效。为了使它更安全:

my_folders %>%
  by_row(function(x) dir.create(as.character(x$folder),
         showWarnings = FALSE), .collate = "rows",
         .to = "success")

我很陌生,所以可能会有更好的方法......