gpt4 book ai didi

r - 如何在R中以制表符分隔的分隔文件的标题之前跳过多余的行

转载 作者:行者123 更新时间:2023-12-02 04:15:29 24 4
gpt4 key购买 nike

我正在使用的软件生成的日志文件包含几行可变的摘要信息,其后是许多制表符分隔的数据。我正在尝试编写一个函数,将忽略这些摘要信息而将这些日志文件中的数据读入数据框。摘要信息永远不会包含选项卡,因此以下功能有效:

read.parameters <- function(file.name, ...){
lines <- scan(file.name, what="character", sep="\n")
first.line <- min(grep("\\t", lines))
return(read.delim(file.name, skip=first.line-1, ...))
}

但是,这些日志文件很大,因此两次读取文件非常慢。当然有更好的方法吗?

编辑添加:

Marek建议使用 textConnection对象。在大文件中,他在答案中建议的方式失败了,但以下方法可行:
read.parameters <- function(file.name, ...){
conn = file(file.name, "r")
on.exit(close(conn))
repeat{
line = readLines(conn, 1)
if (length(grep("\\t", line))) {
pushBack(line, conn)
break}}
df <- read.delim(conn, ...)
return(df)}

再次编辑:感谢Marek对上述功能的进一步改进。

最佳答案

您不需要阅读两次。在第一个结果上使用textConnection

read.parameters <- function(file.name, ...){
lines <- scan(file.name, what="character", sep="\n") # you got "tmp.log" here, i suppose file.name should be
first.line <- min(grep("\\t", lines))
return(read.delim(textConnection(lines), skip=first.line-1, ...))
}

关于r - 如何在R中以制表符分隔的分隔文件的标题之前跳过多余的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3053095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com