列出循环 "i" 次迭代的文件
List files for loop "i" iteractions
我有一个目录,其中的文件名为 name_1_class.csv
、name_1_school.csv
、...name_10_class.csv
、name_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
类似
我有一个目录,其中的文件名为 name_1_class.csv
、name_1_school.csv
、...name_10_class.csv
、name_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
类似