jju*_*lip 5 directory for-loop r
我使用了 for 循环来加载一些文件,执行一些任务并将结果写入新的 csv 文件。存储输入文件的目录是在运行循环之前设置的,但我不想将输出 csv 文件保存到同一目录,而是将其发送到循环内的新目录。
这是一个非常简单的 for 循环示例:
p <- "~/Desktop/MyFolder"
setwd(p)
files <- list.files(path=dir, pattern="csv$", full.names=FALSE, recursive=FALSE)
for(i in 1:length(files)){
f <- lapply(files[i], read.csv, header=TRUE, stringsAsFactors=FALSE)
cat2 <- f[f$mod ==2, c(1,6)]
filename <- files[1]
tn <- strsplit(filename,"_")[[1]][1]
fn <- paste(tn, "_trimmed.csv", sep="")
write.csv(cat2, file=fn, row.names=FALSE)
}
Run Code Online (Sandbox Code Playgroud)
我对 R 还很陌生,还不知道如何做到这一点。任何帮助,将不胜感激。
因此,假设这些文件夹尚不存在,并且您想要创建它们,然后将 output.csv 放入每个文件夹中,则以下操作应该有效:
p <- "~/Desktop/MyFolder"
setwd(p)
files <- list.files(path=dir, pattern="csv$", full.names=FALSE, recursive=FALSE)
for(i in 1:length(files)){
f <- lapply(files[i], read.csv, header=TRUE, stringsAsFactors=FALSE)
#why not:
#f <- read.csv(files[i],header=TRUE, stringsAsFactors=FALSE)
cat2 <- f[f$mod ==2, c(1,6)]
dir.create(paste0("folder",i), showWarnings = FALSE) #stops warnings if folder already exists
write.csv(cat2, file.path(paste0("folder",i), "output.csv"), row.names=FALSE)
}
Run Code Online (Sandbox Code Playgroud)
你的lapply()陈述对我来说似乎没有必要,但也许我遗漏了一些东西
| 归档时间: |
|
| 查看次数: |
9364 次 |
| 最近记录: |