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

使用read_tsv()读取部分ONET数据文件时RStudio崩溃求助

解决read_tsv读取部分ONET文本文件导致RStudio崩溃的问题

问题描述

通过以下代码成功下载ONET官网的文本数据文件:

url_jobzones <- "https://www.onetcenter.org/dl_files/database/db_27_3_text/Job%20Zones.txt"
jobzones_file_name <- "jobzones.txt"
download.file(url_jobzones, destfile= paste("data/EdExTrain", jobzones_file_name, sep="/"))

文件可在Windows系统正常打开,但执行jobzones <- read_tsv("data/EdExTrain/jobzones.txt")时触发致命错误,导致RStudio崩溃。仅以下ONET文件出现该问题,其他文件(如Skills.txt)读取正常:

  • Job Zones
  • Basic Interests to RIASEC
  • Tools Used
  • Tasks to DWA
  • Sample of Reported Titles
  • Abilities to Work Activities

解决建议

1. 指定文件编码读取

这类崩溃多因编码不匹配导致,ONET部分文本文件可能采用UTF-16编码,而非read_tsv默认的UTF-8。尝试指定编码:

library(readr)
jobzones <- read_tsv("data/EdExTrain/jobzones.txt", locale = locale(encoding = "UTF-16"))

若UTF-16无效,可尝试"Latin-1"或"Windows-1252"编码。

2. 换用基础R函数读取

如果readr包仍崩溃,改用基础R的read.delim读取后转换为tibble:

jobzones_raw <- read.delim("data/EdExTrain/jobzones.txt", sep = "\t", fileEncoding = "UTF-16")
jobzones <- as_tibble(jobzones_raw)

3. 校验文件完整性

下载过程可能导致文件损坏,重新下载并核对文件大小:

# 重新下载(指定wb模式确保二进制传输)
download.file(url_jobzones, destfile= "data/EdExTrain/jobzones.txt", mode = "wb")
# 查看文件大小,db_27_3版本Job Zones.txt约为14KB
file.size("data/EdExTrain/jobzones.txt")

4. 升级依赖包与软件

旧版本readr可能存在编码处理bug,升级至最新版:

install.packages("readr")

同时确保RStudio为最新版本,避免兼容性问题。

5. 逐行排查问题行

若以上方法无效,逐行读取定位崩溃的具体行:

# 读取所有行
con <- file("data/EdExTrain/jobzones.txt", encoding = "UTF-16")
lines <- readLines(con)
close(con)

# 分批测试读取
for (i in seq(1, length(lines), 100)) {
  chunk_end <- min(i + 99, length(lines))
  chunk <- lines[i:chunk_end]
  temp <- read_tsv(paste(chunk, collapse = "\n"), locale = locale(encoding = "UTF-16"))
  cat("Processed lines", i, "to", chunk_end, "\n")
}

找到问题行后,可手动清理或跳过该行继续读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:38:13