如果最后一列总是以“SUBJ”开头,你也许可以使用这样的东西。
对于本例,我们将创建一个名为“myFile”的示例文件:
cat("aaaa bbb ccccc SUBJ:X Y ZZZ\naaaaaa bbbbbbb ccccccc SUBJ:X XXX\naaa b ccccc\n", file = "myFile.txt")
使用readLines 读入myFile.txt(或您的实际日志文件)。请注意,第三行没有主题。
myFile <- readLines("myFile.txt")
myFile
# [1] "aaaa bbb ccccc SUBJ:X Y ZZZ"
# [2] "aaaaaa bbbbbbb ccccccc SUBJ:X XXX"
# [3] "aaa b ccccc"
使用一些正则表达式来匹配最后一个“列”:
myMatches <- gregexpr("SUBJ:.*$", myFile)
使用该信息阅读您的data.frame:
cbind(read.table(text = unlist(regmatches(myFile, myMatches, invert=TRUE))),
subj = sapply(regmatches(myFile, myMatches),
function(x) ifelse(length(x) > 0, x, NA)))
# V1 V2 V3 subj
# 1 aaaa bbb ccccc SUBJ:X Y ZZZ
# 2 aaaaaa bbbbbbb ccccccc SUBJ:X XXX
# 3 aaa b ccccc <NA>