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

如何在R中导入多个.txt文件并生成可用于文本分析的tibble

R批量导入多个TXT文件并生成分析用Tibble

需求说明

需要批量导入多个纯文本TXT文件(每个文件包含多行句子),生成包含文件名和文本内容两列的tibble,方便后续用tidytext包做文本分析(比如用unnest_tokens()拆分单词)。

问题分析

你之前的代码存在两个核心问题:

  1. 错误使用表格类读取函数(read_table2/read.delim):这类函数默认按分隔符解析数据,但你的TXT是纯文本句子,没有制表符/分隔符,导致读取格式混乱,无法完整加载内容。
  2. 循环代码变量错误:循环中使用了未定义的fileList变量,且同样用了不适合纯文本的read.delim,导致生成的列表结构不符合tibble转换要求。

正确解决方案

方法1:Tidyverse风格推荐写法

使用purrr批量读取,结合read_lines处理纯文本,直接生成标准tibble:

# 加载所需包
library(tidyverse)

# 获取当前目录下所有TXT文件(带完整路径避免读取失败)
files <- list.files(pattern = "\\.txt$", full.names = TRUE)

# 批量读取并生成tibble
text_data <- files %>%
  set_names(basename(.)) %>%  # 仅保留文件名(去掉路径)
  map_df(~tibble(text = read_lines(.x)), .id = "FileName")

生成的tibble结构示例:

FileNametext
file1.txtOn Monday, I went to the park.
file1.txtI met my friend there.
file2.txtThe weather was sunny today.

方法2:基础R循环写法

如果习惯用基础R实现,可参考以下代码:

# 获取TXT文件列表
files <- list.files(pattern = "\\.txt$")

# 初始化列表存储数据
text_list <- list()

# 循环读取每个文件
for (i in seq_along(files)) {
  # 读取文件所有行
  line_content <- readLines(files[i])
  # 生成带文件名的数据框
  text_list[[i]] <- data.frame(
    FileName = files[i],
    text = line_content,
    stringsAsFactors = FALSE
  )
}

# 合并为tibble
text_data <- do.call(rbind, text_list) %>% as_tibble()

后续文本分析示例

生成tibble后,可直接用tidytext包拆分单词:

library(tidytext)

text_data %>%
  unnest_tokens(word, text) %>%
  count(FileName, word, sort = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:48:20