Выделение определенных имен файлов для набора различных выходных файлов в rmarkdown - PullRequest
0 голосов
/ 29 марта 2019

Я создаю набор файлов PDF, каждый из которых содержит различную информацию.Я хочу назвать файлы в соответствии с людьми, которые будут получать информацию.Я использую for циклы для запуска:

 for (i in 1:nrow(files)){
   rmarkdown::render(input = "files_script.Rmd",
                     output_format = "pdf_document",
                     output_file = paste("Information_", i, ".pdf", sep=''),
                     output_dir = "directoryname/")
 }

Скрипт работает просто отлично, но выходные файлы просто нумеруются в моем каталоге.Я хотел бы назвать их в соответствии с именами в столбце моего фрейма данных.

Мои данные выглядят так:

 Feedback Name    Surname
  xyz      John     Smith
  abc      Karen    Jones

Я хотел бы назвать файлы по фамилии.

1 Ответ

2 голосов
/ 29 марта 2019

Итак, ваши имена в двух столбцах в data.frame (я назвал это df здесь). Вы можете использовать цикл for следующим образом:

for (name in paste0(df$Name, "_", df$Surname)) {
  rmarkdown::render(input = "files_script.Rmd",
                    output_format = "pdf_document",
                    output_file = paste0("Information_", name, ".pdf"),
                    output_dir = "directoryname/")
}

Я заменил paste(sep = "") на paste0(), поскольку он делает то же самое.

Не знаю, почему вы так поступили. files_script.Rmd - это всегда один и тот же файл. Так что будет быстрее сделать его один раз, а затем просто изменить имя.

Обновление

Поскольку вы сказали, что хотите сохранить i как переменную цикла, вот как вы можете это сделать:

names <- paste0(df$Name, "_", df$Surname)
for (i in seq_along(names)) {
  rmarkdown::render(input = "files_script.Rmd",
                    output_format = "pdf_document",
                    output_file = paste0("Information_", names[i], ".pdf"),
                    output_dir = "directoryname/")
}

seq_along является более безопасным способом 1:length(names) в этом случае ( см. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...