从String中提取数字

时间:2013-07-13 07:15:14

标签: r

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

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

这会返回3125,这很好。 (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,那么该字符串是否包含任何数字是正确的吗?有更优雅的方式吗?

2 个答案:

答案 0 :(得分: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的标准方法。)

答案 1 :(得分: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"