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

如何用fread()的skip或其他参数读取txt中特定字符串及之前的行?

用data.table的fread读取到指定行(含"tot")

要读取txt文件中col1列里"tot"及之前的所有行,可以通过以下方式实现:

方法1:先定位行号再读取

这种方法高效且跨平台,适配大多数场景:

library(data.table)

# 仅读取col1列,快速定位"tot"所在的行
col1_content <- fread("your_file.txt", select = "col1")
tot_line_num <- which(col1_content$col1 == "tot")

# 读取从开头到"tot"所在行的所有内容
target_data <- fread("your_file.txt", nrows = tot_line_num)
  • 第一步用select = "col1"只读取目标列,避免加载整个文件,提升处理效率;
  • 第二步通过which()找到"tot"的行索引,再用nrows参数限制读取行数,直接获取目标范围的内容。

方法2:结合shell命令(适合超大文件)

如果是Linux/macOS环境,可直接通过shell命令筛选后读取,无需先加载单列:

target_data <- fread('grep -n "tot" your_file.txt | cut -d: -f1 | xargs -I {} head -{} your_file.txt')

这条命令会先定位"tot"的行号,再用head截取到该行为止的内容,fread直接读取筛选后的结果。

运行后得到的结果与期望一致:

col1     col2
 [1,] "class1" "5" 
 [2,] "class2" "10"
 [3,] NA       NA  
 [4,] "tot"    "15"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:16:57