在 R 中用减号和加号将字符串分成几部分

dlw*_*hch 5 split r substr

我想分割这个字符串: test = "-1x^2+3x^3-x^8+1-x" ...通过 R 中的加号和减号字符分成几部分。我的目标是得到: "-1x ^2" "+3x^3" "-x^8" "+1" "-x"

这不起作用:

strsplit(test, split = "-")
strsplit(test, split = "+")
Run Code Online (Sandbox Code Playgroud)

And*_*own 7

我们可以在 中提供一个正则表达式strsplit,我们使用?=向前查找来查找加号或减号,然后在该字符上进行拆分。这将允许角色本身被保留而不是在分割中被删除。

strsplit(x, "(?<=.)(?=[+])|(?<=.)(?=[-])",perl = TRUE)

# [1] "-1x^2" "+3x^3" "-x^8"  "+1"    "-x"   
Run Code Online (Sandbox Code Playgroud)


Tho*_*ing 5

尝试

> strsplit(test, split = "(?<=.)(?=[+-])", perl = TRUE)[[1]]
[1] "-1x^2" "+3x^3" "-x^8"  "+1"    "-x"
Run Code Online (Sandbox Code Playgroud)

其中(?<=.)(?=[+-])捕获恰好位于+or前面的分离器-


G. *_*eck 5

这使用 gsub 搜索后跟 + 或 - 的任何字符,并在两个字符之间插入分号。然后它以分号分隔。

s <- "-1x^2+3x^3-x^8+1-x"
strsplit(gsub("(.)([+-])", "\\1;\\2", s), ";")[[1]]
## [1] "-1x^2" "+3x^3" "-x^8"  "+1"    "-x"   
Run Code Online (Sandbox Code Playgroud)