我有一个表格
的字符串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=";" )
但我不确定在此之后该怎么做而不会变得凌乱和低效。有什么好主意吗?
答案 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)