Для циклов над символьными строками - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть набор данных со столбцом Locations и другими столбцами.

Locations <- c("Test1", "Test2", "Test3", ..."Test60")

У меня также есть несколько Rmd-файлов.

files <- list.files(pattern = "[.]Rmd$")

Каждый Rmd-файл выполняет разные функции, и каждый результат выдает CSV-файл. Допустим, у меня есть 3 Rmd-файла. Мне нужно запустить эти файлы Rmd для каждого местоположения в локациях. (Так что у меня должно быть 180 csv-файлов)

Я пытаюсь написать для l oop, чтобы каждое местоположение в Locations проходило через 3 файла Rmd. Код выглядит следующим образом:

for (location in Locations){
  for (f in files){
    rmarkdown::render(f) 
    write.csv(results, paste(f, location, ".csv", sep=''))
  }
}

В результате получается 180 CSV-файлов, но они абсолютно одинаковы. (Все 180 CSV-файлов являются результатами, основанными на «Test1».

Я не понимаю, почему это происходит.

1 Ответ

0 голосов
/ 04 апреля 2020

Когда вы создаете имя файла с помощью функции paste, вы делаете следующее: давайте предположим, что ваш первый файл называется file1.Rmd, затем вы сохраняете свой первый набор результатов в file1.RmdTest1.csv - так, пока это не смертельно, это немного странно.

Во-вторых, ваш вызов rmarkdown::render на самом деле не зависит от значения location, поэтому нет причин для различий в результатах на каждой итерации внутреннего l oop. Может быть, вы хотите загрузить некоторые результаты до for(f in files)?

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