1

我有这样的线:

x<-c("System configuration: lcpu=96 mem=196608MB ent=16.00")

我需要等于 ent 的值并将其存储在 R 的 val 对象中

我这样做似乎不起作用。有任何想法吗?

 val<-x[grep("[0-9]$", x)]
4

3 回答 3

4

使用sub

val <- sub('^.* ent=([[:digit:]]+)', '\\1', x)
于 2013-04-11T16:37:53.123 回答
3

如果 ent 总是在最后,那么:

sub(".*ent=", "", x)

如果不在gsubfn 包strapplyc中尝试,它只返回括号内的正则表达式部分:

library(gsubfn)
strapplyc(x, "ent=([.0-9]+)", simplify = TRUE)

也可以使用以下方法同时将其转换为数字strapply

strapply(x, "ent=([.0-9]+)", as.numeric, simplify = TRUE)
于 2013-04-11T16:48:36.363 回答
0

使用rex可能会使这种类型的任务更简单一些。

请注意,此解决方案正确包含.在捕获中,G. Grothendieck 的回答也是如此。

x <- c("System configuration: lcpu=96 mem=196608MB ent=16.00")

library(rex)
val <- as.numeric(
  re_matches(x,
    rex("ent=",
      capture(name = "ent", some_of(digit, "."))
      )
    )$ent
  )
#>[1] 16
于 2014-12-02T19:54:25.583 回答