基本问题...... 我有一个字符串,我正在尝试使用下面的字符串中提取数字。
str2="<P>3.1 Design objectives .....
<Link>25
</Link> </P>"
str2
a<-strapply(str2,"\\d+",as.numeric,simplify=TRUE)
a
这会返回3
,1
和25
,这很好。 (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
,那么该字符串是否包含任何数字是正确的吗?有更优雅的方式吗?
答案 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"