簡體   English   中英

幫助正則表達式

[英]Help on regular expression

使用rSymPy來求解方程組,我得到x和y的值,用這樣的字符串解決系統:

"[(1.33738072607023, 27.9489435205271)]"

我應該如何將這兩個值分配給變量x,y?

要拆分字符串,您可以使用:

vect <- as.numeric(strsplit(gsub("[^[:digit:]\\. \\s]","",x)," "))
x <- vect[1]
y <- vect[2]

這會刪除不是空格,點或數字的所有內容。 strsplit拆分向量中剩下的字符串。 另請參閱相關的幫助文件。

分配可以循環或使用Gavin函數完成。 我只是說出他們的名字。

names(vect) <-c("x","y")
vect["x"]
       x 
1.337381

對於更大的數據集,我喜歡將事物放在一起以避免使用名稱來重載工作區。

以下是一些可以執行您想要的操作的步驟。 不能說它是最有效或最優雅的解決方案......

string <- "[(1.33738072607023, 27.9489435205271)]"
string <- gsub("[^[:digit:]\\. \\s]", "", string)
splt <- strsplit(string, " ")[[1]]
names(splt) <- c("x","y")
FOO <- function(name, strings) {
    assign(name, as.numeric(strings[name]), globalenv())
    invisible()
}
lapply(c("x","y"), FOO, strings = splt)

最后一行將返回:

> lapply(c("x","y"), FOO, strings = splt)
[[1]]
NULL

[[2]]
NULL

我們在全球環境中分配了xy

> x
[1] 1.337381
> y
[1] 27.94894

strapply包中的strapply使得只使用相對簡單的正則表達式從字符串中提取數字相當容易。 這里s是輸入字符串, v是帶有兩個數字的數字向量:

library(gsubfn)
v <- strapply(s, "[0-9.]+", as.numeric)[[1]]
x <- v[1]
y <- v[2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM