2

基本问题...我有一个字符串,我正在尝试使用以下方法从字符串中提取数字。

str2="<P>3.1 Design objectives ..... 
<Link>25 
</Link> </P>"
str2
a<-strapply(str2,"\\d+",as.numeric,simplify=TRUE)
a

这会返回3, 125这很好。3.1(分开没关系)

但是,如果字符串根本没有数字:

pr <- "This is a test string"
b<-strapply(pr,"\\d+",as.numeric,simplify=TRUE)

b 返回:

[[1]]
NULL

如何使用上述方法检测字符串中是否存在数字?

is.null(b)False按原样返回。

length(b)给了1,哪个是NULL对象?

那么,如果是的话,说字符串不包含任何数字是否length(b)正确1?有没有更优雅的方式来做到这一点?

4

2 回答 2

4
require(gsubfn)
pr <- "This is a test string"
b<-strapply(pr,"\\d+",as.numeric,simplify=TRUE)
if( !length(b[[1]]) ){TRUE}
#[1] TRUE

(这是测试列表元素是否为 NULL 的标准方法。)

于 2013-07-13T07:31:14.107 回答
0

我会unlist得到结果并测试它length,例如使用strapplyc

  (ll <- as.numeric(unlist(strapplyc(str2,"\\d+",simplify = TRUE))))
   numeric(0)
   length(ll)
   [1] 0

编辑重新阅读您的问题,我认为在应用正则表达式之前将您的 XML 结构转换为简单文本会更好/更安全。例如,您可以这样做:

library(XML)
toString(xmlToList(str2))
[1] "3.1 Design objectives ..... \n, 25,  \n"
于 2013-07-13T08:13:26.723 回答