Создание папок с помощью прогулки и мурлыканья

Я пытаюсь создать небольшую функцию, которая настроит рабочую среду в 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)

Кто-нибудь может помочь?

Спасибо


person John Smith    schedule 24.02.2017    source источник


Ответы (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")

Я новичок в мурлыкании, так что может быть способ получше ...

person sinQueso    schedule 24.02.2017