我需要从矢量中的字符串中提取特定数字,如下所示:
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))
在&#34; CD =&#34;之后抓取数字在用逗号分隔的数字不超过一个的情况下。
我需要这个包含多个以逗号分隔的数字的行。 我的正则表达式仅适用于该点中只有一个数字的行,如下所示:
0.5555
0.4444,0.78463
0.0123
0.34,0.54,0.765
我知道这可能是我犯的一个愚蠢的错误...提前谢谢!!!
答案 0 :(得分:1)
这是一种方法
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), ",")))