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

在RStudio中将CSV内容与文件名存入DataFrame的方法

解决方法

核心思路是不按CSV格式解析文件,而是将每个文件当作纯文本读取完整内容,同时关联对应的文件名。

1. 获取目标CSV文件路径

先定位到你的文件所在目录,用list.files()批量获取所有.csv文件的路径:

# 替换成你的文件目录,比如 "./csv_files"
file_paths <- list.files(path = "你的文件目录", pattern = "\\.csv$", full.names = TRUE)

2. 批量读取并生成DataFrame

基础R实现

# 初始化空列表存储单文件结果
result_list <- list()

for (path in file_paths) {
  # 读取整个文件的文本内容(多行合并为一个字符串)
  text_content <- paste(readLines(path), collapse = "\n")
  # 获取文件名(去掉路径和.csv后缀,要保留后缀就用basename(path))
  unique_id <- tools::file_path_sans_ext(basename(path))
  # 存入列表
  result_list[[path]] <- data.frame(uniqueID = unique_id, text = text_content, stringsAsFactors = FALSE)
}

# 合并为最终DataFrame
df <- do.call(rbind, result_list)

tidyverse简洁实现

如果习惯用tidyverse工具链,可以用更紧凑的代码:

library(tidyverse)

df <- tibble(file_path = file_paths) %>%
  mutate(
    # 提取文件名(去掉.csv后缀,保留后缀则用basename(file_path))
    uniqueID = str_remove(basename(file_path), "\\.csv$"),
    # 读取完整文本内容
    text = map_chr(file_path, ~ paste(readLines(.x), collapse = "\n"))
  ) %>%
  select(uniqueID, text) # 调整列顺序为需求的结构

关键细节

  • readLines()按行读取文件内容,paste(..., collapse = "\n")可以保留原文件的换行结构;如果文件只有一行,直接用readLines(path)[1]更简单。
  • 若需要保留完整文件名(包含.csv后缀),只需把处理文件名的代码换成uniqueID = basename(path)即可。
  • 绝对不要用read.csv()这类CSV解析函数,它们会自动按逗号分割内容成多列,这正是你之前遇到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:45:37