我试图从pdftools包生成的字符向量中提取表格数据。输出(修剪后)如下所示:
pdftext <- c(" Clostridium perfringens no./100ml 0 0 0 0 1409 0 0\n Colony count 22°C cfu/ml - 0 15.673 >300.000 52 0 0\n Colony count 37°C cfu/ml - 0 3.942 41 52 0 0")
lines <- strsplit(pdftext,"\n")
lines
[[1]]
[1] " Clostridium perfringens no./100ml 0 0 0 0 1409 0 0"
[2] " Colony count 22°C cfu/ml - 0 15.673 >300.000 52 0 0"
[3] " Colony count 37°C cfu/ml - 0 3.942 41 52 0 0"我一直在使用以下方法将它们分割并连接到字符矩阵中:
do.call(rbind,lapply(lines, function(x) {strsplit(x," [ ]+")})[[1]])这将失败,因为包含15.673 >300.000的列之间只有一个空格。
这里可能有不止一个问题:
15.673 >300.000,而不是Colony count 22°C谢谢。
发布于 2016-12-12 21:56:38
我发了3个问题。这是对RegExp问题(2)的回答。
@rawr有助于更好地表达PCRE,但当我浏览500份报告时,我发现了更多的问题。我找不到一条能够处理所有变化的规则,所以更好的RegExp不会解决这个问题。列的边界也会变化,所以固定的宽度不会解决这个问题,除非我检测到每一页的列。
我通过两次解析输出来解决这个问题。在第一次测试中,我使用{2,} (即>=2空格)进行拆分,并获得了前2列的文本。第二步,我用{1,} (即>=1空间)进行除法,得到最后7列数字。两次传递都被胁迫到字符向量的数据帧中,然后cbind将它们组合起来。
https://stackoverflow.com/questions/40839021
复制相似问题