R语言循环中如何将新生成的dataframe保存为指定独立CSV文件?
问题解决方法
你的代码核心问题是保存文件时没有正确引用dataname变量,直接把字符串"dataname"写进了文件名里,导致所有输出文件都会被命名为dataname_binomial data.csv(还会互相覆盖)。另外建议提前创建目标文件夹,避免因文件夹不存在导致保存失败。
修改后的完整代码
library(dplyr) library(data.table) parentdir <- "C:/Users/s2087070/Desktop/PhD/IAH Systematic Review" datadir <- file.path(parentdir, "New Folder") # 用file.path更适配不同系统路径规则 target_dir <- file.path(parentdir, "Binomial data") # 提前创建目标文件夹(不存在则创建) if (!dir.exists(target_dir)) { dir.create(target_dir, recursive = TRUE) } setwd(datadir) files <- list.files() for (file in files) { # 提取不带后缀的原文件名 dataname <- strsplit(file, split = "[.]")[[1]][1] # 读取并处理数据 data <- read.csv(file) data1 <- data[, 1:3] data1$Uninfected <- data1$num.tot - data1$num.inf new <- reframe(data1, Score = c(rep(1, num.inf), rep(0, Uninfected)), .by = inoc.size) new1 <- data.frame(new) # 拼接正确的输出文件名和路径 output_filename <- paste0(dataname, "_binomial data.csv") output_path <- file.path(target_dir, output_filename) # 保存文件(去掉row.names避免生成额外索引列) write.csv(new1, output_path, row.names = FALSE) }
关键修改点
- 路径兼容性优化:用
file.path替代paste拼接路径,自动适配Windows/macOS/Linux的路径分隔符。 - 目标文件夹保障:新增
dir.create逻辑,确保"Binomial data"文件夹存在,避免保存失败。 - 正确生成文件名:用
paste0将dataname变量与固定后缀拼接,生成符合要求的文件名,再组合目标路径得到完整输出地址。 - 细节优化:在
write.csv中添加row.names = FALSE,避免输出文件里多出一列默认的行索引。
内容的提问来源于stack exchange,提问作者K.W
相关产品推荐
相关产品推荐

