R 跳转到大型txt文件中的某个位置

R 跳转到大型txt文件中的某个位置,r,readr,R,Readr,我有100多个.txt文件,我想在这些文件上进行计算。这些文件包含由眼球跟踪器收集的凝视数据 数据的第一部分是校准部分。它只包含有限数量的变量。每一行看起来像这样(大约20000行): 数据的第二部分包含凝视测试期间收集的实际凝视数据。它包含更多我感兴趣的变量。看起来是这样的: Gaze Data - IviewTimestamp 649261961 OpenSesameTimeStamp 55191.0 GazeLeft 0.0 0.0 GazeRight 0.0 0.0 DistanceRi

我有100多个.txt文件,我想在这些文件上进行计算。这些文件包含由眼球跟踪器收集的凝视数据

数据的第一部分是校准部分。它只包含有限数量的变量。每一行看起来像这样(大约20000行):

数据的第二部分包含凝视测试期间收集的实际凝视数据。它包含更多我感兴趣的变量。看起来是这样的:

Gaze Data - IviewTimestamp 649261961 OpenSesameTimeStamp 55191.0 GazeLeft 0.0 0.0 GazeRight 0.0 0.0 DistanceRight 530.630058679 DiameterLeft 4.89342033646 DiamaterRight 4.44607910548
但是,当我使用函数“读取表2”时,它只能找到校准过程中收集的变量。这是因为R只查看.txt文件的前1000行来确定变量。我希望它跳到包含“iviewTimestamp”的第一行,这样它只导入.txt文件的相关部分并自动找到正确的变量。由于校准长度并非在每个对象中都相等,因此不可能跳到固定的数字


我该怎么做

大约:使用
grep()
查找所需字符串的第一个位置,然后使用
read\u table2
skip
参数

firstline <- grep("IviewTimestamp",readLines("file.txt"))[1]

这是低效的(因为您需要读取文件两次),但我猜每个文件的花费不到一秒钟。在Unix或类似Unix的操作系统上工作的一个更笨重但更高效的解决方案是使用
system()
运行外部(更高效的)
grep
命令。

我建议您导入数据并在之后进行整理,而不是读取两次

首先使用以下文件导入目录中的所有文件:

library(dplyr)
library(purrr)
df <- map_df(list.files(path = path, pattern = '*.txt', full.names = TRUE), read_table2)

谢谢@Ben Bolker,这很有效!不知道readLines函数。[1]是做什么的?
read_table2("file.txt", skip=firstline-1)
library(dplyr)
library(purrr)
df <- map_df(list.files(path = path, pattern = '*.txt', full.names = TRUE), read_table2)
filter(df, 'timeStampColumnName' == IviewTimestamp)