gpt4 book ai didi

r - 将输出文件从 for 循环发送到 R 中的新目录

转载 作者:行者123 更新时间:2023-12-02 01:48:45 30 4
gpt4 key购买 nike

我使用了一个 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)

}

我对 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)
}

您的 lapply()声明对我来说似乎没有必要,但也许我遗漏了一些东西

关于r - 将输出文件从 for 循环发送到 R 中的新目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025629/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com