You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:42:33