我有这样的线:
x<-c("System configuration: lcpu=96 mem=196608MB ent=16.00")
我需要等于 ent 的值并将其存储在 R 的 val 对象中
我这样做似乎不起作用。有任何想法吗?
val<-x[grep("[0-9]$", x)]
我有这样的线:
x<-c("System configuration: lcpu=96 mem=196608MB ent=16.00")
我需要等于 ent 的值并将其存储在 R 的 val 对象中
我这样做似乎不起作用。有任何想法吗?
val<-x[grep("[0-9]$", x)]
使用sub
:
val <- sub('^.* ent=([[:digit:]]+)', '\\1', x)
如果 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)
使用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