cap*_*oma 3 text replace r tm tidytext
有没有办法用字符串中的单个数字替换数字范围?数字的范围可以从nn,最可能在1-15左右,也可能是4-10.
范围可以用a)表示 -
a <- "I would like to buy 1-3 cats"
Run Code Online (Sandbox Code Playgroud)
或者用词b)例如:to,bis,jusqu'à
b <- "I would like to buy 1 jusqu'à 3 cats"
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的
"I would like to buy 1,2,3 cats"
Run Code Online (Sandbox Code Playgroud)
我发现这个:用一定数量替换数字范围,但在R中无法真正使用它.
gsubfn在gsubfn包中就像是,gsub但不是用替换字符串替换匹配,而是允许用户指定一个函数(可能在公式表示法中这样做).然后,它将匹配传递给正则表达式中的捕获组,即与正则表达式的带括号部分的匹配,作为单独的参数,并将整个匹配替换为函数的输出.因此,我们匹配"(\\d+)(-| to | bis | jusqu'à )(\\d+)"哪个结果导致三个捕获组,因此该函数有3个参数.在我们使用的函数中seq,第一个和第三个.请注意,seq可以采用字符参数并将其解释为数字,因此我们不必将参数转换为数字.
因此,我们得到这个单线:
library(gsubfn)
s <- c(a, b) # test input strings
gsubfn("(\\d+)(-| to | bis | jusqu'à )(\\d+)", ~ paste(seq(..1, ..3), collapse = ","), s)
Run Code Online (Sandbox Code Playgroud)
赠送:
[1] "I would like to buy 1,2,3 cats" "I would like to buy 1,2,3 cats"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |