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

使用R下载Project Gutenberg文本文件时遇读取警告问题

解决R读取Project Gutenberg文本时的警告问题

咱们来拆解这两个警告的原因,然后给出对应的修复方案:

警告1:invalid or incomplete compressed data

这个问题大概率是因为你下载的pg100.txt其实是gzip压缩格式的文件,只是后缀名保留了txt。Project Gutenberg有时候会自动返回压缩后的文件来节省带宽,但直接用readLines读取未解压的压缩文件就会触发这个警告。

警告2:incomplete final line found

这个通常是因为文件的最后一行没有以换行符结尾,属于文本文件里的常见情况,一般不会影响数据完整性,但如果看着不舒服可以针对性处理。

修复后的代码方案

setwd("D:\\sourceCode")
TEXTFILE = "pg100.txt"
GZIP_FILE = "pg100.txt.gz"

# 处理下载与解压逻辑
if (!file.exists(TEXTFILE)) {
  # 以二进制模式下载,避免压缩文件损坏
  download.file("http://www.gutenberg.org/cache/epub/100/pg100.txt", destfile = GZIP_FILE, mode = "wb")
  # 直接读取压缩文件内容
  gz_conn = gzfile(GZIP_FILE, "r")
  shakespeare = readLines(gz_conn)
  close(gz_conn)
  # 保存解压后的文本,方便后续直接读取
  writeLines(shakespeare, TEXTFILE)
  # 清理临时压缩文件(可选)
  file.remove(GZIP_FILE)
} else {
  # 读取已存在的文本,抑制"不完整最后一行"的警告
  shakespeare = readLines(TEXTFILE, warn = FALSE)
}

代码细节说明

  • mode = "wb":确保压缩文件以二进制格式下载,避免系统自动转换格式导致文件损坏。
  • gzfile():直接读取gzip压缩内容,无需手动解压,简化流程。
  • readLines(..., warn = FALSE):如果确认最后一行数据完整,用这个参数可以屏蔽无关警告;如果担心数据缺失,可以去掉该参数,手动检查tail(shakespeare)确认内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:08:51