Список файлов для итераций цикла "i"


У меня есть каталог с файлами с именем что-то вроде name_1_class.csv, name_1_school.csv, ... name_10_class.csv, name_10_school.csv

Я читаю эти файлы из каталога, и после подстановки CSV, я объединяю их в один файл и записываю его в новый каталог, который имеет имя итерации. Хотя мне удалось запустить этот код с индексами, указанными непосредственно, я хотел бы создать функцию, которая считывала бы шаблон csv-файлов на основе i как число итераций.

Код I иметь ниже явно не получается, т. е.

school <- list.files(pattern="1-school.csv" )

Когда 1 указано работает нормально, но я не понял, как абстрагировать индексацию до i в регулярном выражении.

Как определить шаблон, основанный на последовательности итераций? Все предложения приветствуются (очевидно, я новичок в этом).

d <- 1:10

for (i in 1:length(d)) {

    school <- list.files(pattern=i"-school.csv" )
    class <- list.files(pattern=i"_class.csv" )

    school <- data.frame(lapply(school, read.csv))
    class <- data.frame(lapply(class, read.csv))

    school <- data.frame(school[, c(2,4,5)])
    school$school <- rep("school")

    class <- data.frame(class[, c(2:4)])
    class$class <- rep("class")


    df <- rbind(school,class)
    dir.create(paste0("iteration",i), showWarnings = FALSE)

    write.csv(df, file.path(paste0("iteration",i), "output_file.csv"), row.names=FALSE)

}
2 2

2 ответа:

Вы можете вставить число i в строку и искать его. Вот так:

school <- list.files(pattern=paste0(i,"_school.csv" ))
class <- list.files(pattern=paste0(i,"_class.csv" ))

Пример:

i=1

list.files(pattern=".csv")
  "csv1.csv"                "csv2.csv"

list.files(pattern=paste0(i,".csv"))
  "csv1.csv"

Вы можете использовать вставку для создания строк из переменных.

Ie

for (i in 1:n){(paste("df",i,sep="") <-read.csv(paste(i,"-school.csv",sep="") }

И аналогично для класса