我需要在遵循相同标准布局的一组文档中搜索特定信息。
在我使用grep
查找每个文档中的关键字后,我继续收集感兴趣的数字或字符。
我必须收集的一项数据是 Total Power ,如下所示:
TotalPower:986559。(UoPow)
由于我已经正确选择了这段摘录,我创建了以下函数,该函数采用位置n和m之间的字符,其中n和m从右向左开始向上计数。
substrRight <- function(x, n,m){
substr(x, nchar(x)-n+1, nchar(x)-m)
}
重要的是,从“:”到数字986559,有2个空格;从“。”到“(”,有一个空格。
所以我写道:
TotalP = substrRight(myDf[i],17,9) [1]
其中myDf
是一个包含所有相关观察结果的字符向量。
第一行[1],在我遍历所有观察结果后,给出了我想要的数字,但我注意到当数字是986559时,结果是98655.它根本就没有“看到”9作为最后一个数。
代码似乎对其余数据工作正常。这个数字(986559)确实是数据中的最高数字,并且是唯一一个数量级为10 ^ 5的数字。
如何确保收集每个号码的所有数字?
感谢您的帮助。
答案 0 :(得分:1)
我们可以使用正则表达式外观
在int
之前提取数字
.
library(stringr)
str_extract(str1, "\\d+(?=\\.)")
#[1] "986559"
表示一个或多个挖掘者,然后是正则表达式的样式\\d+