有没有办法从 ASC 文件中逐行读取并在特定子字符串后检查它?

问题描述 投票:0回答:1

我有一个包含多行的文件,我想将其转换为数据框架以进行一些数据科学。

逐行阅读,我发现了一些代码片段,但它似乎运行得不太好。但这不是主要问题。首先,我只想保存其中包含字符串“CANFD”的行。我知道,由于向量的原因,这不适用于标准 if 构造。子字符串有效,并且数字是正确的。

fileName <- "Data2F001new.ASC"
conn <- file(fileName,open="r")
linn <-readLines(conn)
for (i in 1:length(linn)){
  {
    tmp <- substring(linn, 12, 16)
    if(tmp=="CANFD"){
    system <- substring(linn, 12, 16)
    timestamp <- substring(linn, 0, 10)  
    bytes <- substring(linn, 54, 56)
  channel <- substring(linn, 19,20)
  }
}
close(conn)     

R 对我说:条件长度 > 1,并且仅使用第一个元素。 预期输出是带有 CANFD 的线路。

r parsing bigdata ascii data-science
1个回答
1
投票

这是一个如何做到这一点的示例:

## Create a temp file as dummy example
tmp <- tempfile(fileext = ".txt")
con <- file(tmp, open = "rw")
## Write some lines into the file
writeLines(sample(LETTERS, 1000, replace = TRUE), con)

## read the lines
all_lines <- readLines(con) ## each element represents one line

## filter lines which contain an 'A'
## in your case you want something like grep("CANFD", all_lines)
## see ?grep for further info
all_lines[grep("A", all_lines)]
close(con)
© www.soinside.com 2019 - 2024. All rights reserved.