我使用以下代码来处理我的数据,但最近我意识到,使用Skip=27(在数据开始之前跳过存储在我的文件中的信息,不是一个好的 Select ,因 for each 文件中要跳过的行数不同.我的目标是读取存储在多个文件夹中的各种txt文件(不是所有的文件都有相同的列数,列的顺序不同,并为温度固定列名).我的数据显示如下:

/* DATA DESCRIPTION:
算法rithm
Checks
    Version 
Parameter(s)
  Date/Time
  Pres
  Wind
  ...
  ...
*/
Date/Time Pres Wind Temp
2022-03-01S01:00:00 278 23 29
2022-03-01S02:00:00 278 23 23
..

我想从*/旁边的行读取我的数据.为此,我try 了代码given here,但我无法根据我的要求重写它.有没有人可以帮我相应地修改代码.

推荐答案

从您的示例中,您想要阅读的第一行似乎是从Date/Time开始的.

?fread个文档中,skip可以是:

...skip="string"在文件中搜索"string"(例如,列名称行的子字符串),并从该行开始(灵感来自包gdata中的read.xls).

利用这一点,我认为你可以做到

dt <- lapply(filelist, fread, skip = "Date/Time")

由于这在本例中不起作用,下面是一种改进,我们查找最后一个注释行,并相应地设置skip参数,就像您在问题中链接的答案中一样:

dt <- lapply(filelist, function(file) {
  lines <- readLines(file)
  comment_end = match("*/", lines)
  fread(file, skip = comment_end)
})

如果您的文件很长,并且您可以设置注释长度的上限,您可以通过设置最大读取行数为readLines来提高效率,例如,lines <- readLines(file, n = 100)以读取最多readLines行来查找注释.如果你真的想做得更好,你可以判断前readLines行,如果你仍然没有找到,那么再试着阅读整个文件.

这还假设最后一个注释行正好是"*/".如果该行上可能有空格或其他字符,您可以将match("*/", lines)替换为grep("*/", lines, fixed = TRUE)[1],这样会稍微慢一些.

R相关问答推荐

R -创建一列,指示另一列是否具有相同的值

如何计算新变量中的通货inflating 率?

根据列中的数字移动单元格位置

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

如何在R中正确对齐放射状图中的文本

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

在"gt"表中添加第二个"groupname_col",而不连接列值

迭代通过1个长度的字符串长字符R

使用rest从header(h2,h3,table)提取分层信息

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

为左表中的所有行使用值Fill滚动左连接

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

观察器中的inaliateLater的位置

减少雨云面之间的间距并绘制所有统计数据点

从线的交点创建面

如何预测原始数据集并将值添加到原始数据集中

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值

使用ggplot2绘制具有边缘分布的坡度图