列出循环 "i" 次迭代的文件

List files for loop "i" iteractions

我有一个目录,其中的文件名为 name_1_class.csvname_1_school.csv、...name_10_class.csvname_10_school.csv

我正在从目录中读取这些文件,在对 csvs 进行子集化之后,我将它们组合成一个文件并将其写到一个具有迭代名称的新目录中。虽然我设法 运行 这段代码直接指定了索引,但我想创建一个函数来读取基于 i 的 csv 文件的模式作为迭代次数。

我下面的代码显然不起作用,即

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)

}

您可以将数字 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"

您可以使用粘贴从变量创建字符串。

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

与 class

类似