如何从字符串中提取数字

时间:2014-03-25 10:54:26

标签: r

我有一个表格

的字符串
myString <- "[-7254.6525:1.0468013108342776E-19;-1612.1450000000002:1.2422203331775682E-15;-5642.5075:2.8679731025539593E-18]"

此字符串包含一对数字列表。每对数字用“:”分隔,每对用“;”分隔。

我想提取数字并将它们放入像这样的矢量或矩阵

-7254.6525 1.0468013108342776E-19 -1612.1450000000002 1.2422203331775682E-15 -5642.5075 2.8679731025539593E-18

我正在努力避免循环。这就是我到目前为止所拥有的

strsplit( gsub ("\\[|\\]", "", myString ), split=";" )

但我不确定在此之后该怎么做而不会变得凌乱和低效。有什么好主意吗?

2 个答案:

答案 0 :(得分:4)

我不确定这是否是最优雅的方式,但它可以完成工作

t(matrix(unlist(strsplit(unlist(strsplit(gsub ("\\[|\\]", "", myString ), ";" )), ":")), 2, 3))

     [,1]                  [,2]                    
[1,] "-7254.6525"          "1.0468013108342776E-19"
[2,] "-1612.1450000000002" "1.2422203331775682E-15"
[3,] "-5642.5075"          "2.8679731025539593E-18"

答案 1 :(得分:4)

另一种方式:

nrow <- length(gregexpr(";", myString)[[1]])+1
numbers <- as.numeric(strsplit(substr(myString, 2, nchar(myString)-1), ";|:")[[1]])
mat <- matrix(numbers, nrow=nrow, byrow=TRUE)