仅提取逗号之间的数字

Extract only number between commas

我的代码中有一个这样的返回字符串:(<C1>, 4.297, %) 我正在尝试使用 gsub 命令从该字符串中仅提取值 4.297:

Fat<-gsub("\D", "", stringV)

然而,这不仅提取了 4.297,还提取了 C1 中的数字“1”。 有没有办法从这个字符串中只提取4.297,请你帮忙。

谢谢

这个怎么样?

# Your sample character string
ss <- "(<C1>, 4.297, %)";

gsub(".+,\s*(\d+\.\d+),.+", "\1", ss)
#[1] "4.297"

gsub(".+,\s*([0-9\.]+),.+", "\1", ss)

如有必要,使用 as.numeric 转换为数字。

另一种选择是 str_extract 将一个或多个数字元素与 . 匹配,并且前面是单词边界,后面是单词边界(\b)

library(stringr)
as.numeric(str_extract(stringV, "\b[0-9.]+\b"))
#[1] 4.297

如果有多个号码,使用str_extract_all

数据

stringV <- "(<C1>, 4.297, %)"

另一种方法是将向量视为逗号分隔变量,并使用 read.csv

df <- read.csv(text = stringV, colClasses = c("character", "numeric", "character"), header = F)
    V1    V2  V3
1 (<C1> 4.297  %)

此方法依赖于 'numeric' 在向量中的 'second' 位置。

您可以使用 as.numeric 将无数字字符串转换为 NA

ss <- as.numeric(unlist(strsplit(stringV, ',')))
ss[!is.na(ss)]
#[1] 4.297