我有以下需要在R
中阅读的日志MO RSITE COMB FHOP MODEL
RXOTG-0 3BFR42 HYB SY G12
SWVERREPL SWVERDLD SWVERACT TMODE
B1312R078G B1312R078G SCM
MO RSITE COMB FHOP MODEL
RXOTG-1 3BFR42 HYB SY G12
SWVERREPL SWVERDLD SWVERACT TMODE
B1312R078G B1312R078G SCM
我需要像那样阅读
MO RSITE COMB FHOP MODEL SWVERREPL SWVERDLD SWVERACT TMODE
RXOTG-0 3BFR42 HYB SY G12 B1312R078G B1312R078G SCM
RXOTG-1 3BFR42 HYB SY G12 B1312R078G B1312R078G SCM
我不能使用read.fwf,因为每行都有不同的宽度,每行都有一个标题。我能阅读的唯一方法是使用read.table sep =“”,经过大量的转换,我得到了想要的输出。
有人建议用较少的编码阅读吗?
答案 0 :(得分:0)
您可以使用readLines
然后提取线条,将它们粘贴在一起并使用text
中的read.table
参数来导入数据。
f <- readLines("myFile.txt")
header <- paste(f[1], f[3])
body <- sapply(seq(1, length(f), 6), function(i) paste(f[i+1], f[i+4]))
read.table(header = FALSE, text = paste(body, collapse = "\n"))
这省略了空白栏。如果您需要此列,或者不同的列为空,请改用read.fwf
。
答案 1 :(得分:0)
这将读取您的示例,但如果任何条目具有未加引号的嵌入空格,则会失败:
data.frame( scan(text=txt,
what=list( MO="", RSITE="", COMB="", FHOP="",
MODEL="", SWVERREPL="", SWVERDLD="",
SWVERACT ="", TMODE=""),
multi.line=TRUE))[c(TRUE, FALSE), ] # removes extraneous extra "headers"
#--------------
Read 4 records
MO RSITE COMB FHOP MODEL SWVERREPL SWVERDLD SWVERACT TMODE
1 MO RSITE COMB FHOP MODEL RXOTG-0 3BFR42 HYB SY
3 MO RSITE COMB FHOP MODEL RXOTG-1 3BFR42 HYB SY