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

R语言循环批量读取CSV文件失败问题求助

问题分析

你的循环只保留最后一年数据的核心问题有两个:

  • 每次循环都执行k <- c(),把存储结果的向量清空,之前年份的处理结果全被丢弃,最后只剩2021年的数据
  • t <- paste("text", i, sep="")这行完全无效,后续直接把t覆盖成了读取的数据框,这行代码可以删掉
修正后的循环代码

先初始化一个空向量存储所有结果,循环里每次把当前年份的处理结果追加进去:

# 初始化空向量存储最终结果
all_texts <- character(0)

for (i in 2011:2021) {
  # 拼接文件名
  file_name <- paste0("kbr_", i, ".csv")
  # 读取文件
  df <- read.csv2(file_name, header = TRUE, sep = ";")
  # 去重并提取Full.context列(用$直接取向量,比[]更合适)
  unique_texts <- df$Full.context[!duplicated(df$Full.context)]
  # 转为字符型(如果该列本身是字符型可省略)
  unique_texts_chr <- as.character(unique_texts)
  # 追加到总向量中
  all_texts <- c(all_texts, unique_texts_chr)
}

# 可选:对所有年份的合并结果做全局去重
all_texts_final <- unique(all_texts)
更简洁的R风格写法(推荐)

用lapply批量处理文件,代码更简洁不易出错:

# 生成所有文件名
file_names <- paste0("kbr_", 2011:2021, ".csv")

# 批量处理每个文件
all_results <- lapply(file_names, function(file) {
  df <- read.csv2(file, header = TRUE, sep = ";")
  # 去重并转字符
  as.character(df$Full.context[!duplicated(df$Full.context)])
})

# 合并所有结果为一个向量
all_texts <- unlist(all_results)
# 可选:全局去重
all_texts_final <- unique(all_texts)
关键细节说明
  • 用paste0替代paste更高效,默认分隔符是空字符串,无需额外指定sep=""
  • 提取列时用df$Full.context直接得到向量,比df["Full.context"]返回的单列数据框更方便后续处理
  • 如果你的Full.context列本身就是字符类型,as.character()可以直接省略

内容的提问来源于stack exchange,提问作者pindakazen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:46:13