gsub 从字符串正则表达式可选逗号中提取特定数字

gsub extracting a specific number from a string regex optional comma

我需要从向量中的字符串中提取特定数字,如下所示:

V1    V2    info
XX    YY    AB=414312;CD=0.5555;EF=1234;GH=2346;IJ=551;AA_CD=0.4633
VV    ZZ    AB=1093;CD=0.4444,0.78463;EF=1654;GH=6546;IJ=1241;AA_CD=0.4366

我只想从 "CD=XXX" 中提取数字(注意每行还有一个 "AA_CD=XXXX")

我目前有:

df$info <- as.numeric(gsub("^.*;CD=[0-9, ],?|;.*$", "", df$info))

在 "CD=" 之后的数字以逗号分隔的情况下不超过一个数字。

我需要它来包含多个数字以逗号分隔的行。 我的正则表达式仅适用于该位置只有一个数字的行,如下所示:

0.5555
0.4444,0.78463
0.0123
0.34,0.54,0.765

我知道这可能是我犯的一个愚蠢的错误...提前致谢!!!

这是一个方法

lapply(strsplit(gsub("^.*;CD=(0\.[0-9]),?|;.*$", "\1", vec), ","), as.numeric)

gsub("^.*;CD=(0\.[0-9]),?|;.*$", "\1", vec) #extracts the numbers
#output
1] "0.5555"         "0.4444,0.78463"

然后将这些拆分为 ,strsplit 生成一个列表

然后as.numeric将列表元素转换为lapply

如果不需要跟踪哪个向量成员有哪些数字:

as.numeric(unlist(strsplit(gsub("^.*;CD=(0\.[0-9]),?|;.*$", "\1", vec), ",")))