gpt4 book ai didi

regex - 使用 sub 增加字符串中的数字

转载 作者:行者123 更新时间:2023-12-02 15:18:23 24 4
gpt4 key购买 nike

在某处有一个带有(单个)数字的字符串。我想把数字加一。简单吧?我没有再考虑就写了以下内容:

sub("([[:digit:]]+)", as.character(as.numeric("\\1")+1), string)

...并获得了 NA。

> sub("([[:digit:]]+)", as.character(as.numeric("\\1")+1), "x is 5")
[1] NA
Warning message:
In sub("([[:digit:]]+)", as.character(as.numeric("\\1") + 1), "x is 5") :
NAs introduced by coercion

为什么不起作用?我知道这样做的其他方法,所以我不需要“解决方案”。我想了解为什么此方法失败。

最佳答案

重点是反向引用仅在匹配操作期间进行评估,在此之前您不能将其传递给任何函数。

当您编写 as.numeric("\\1") 时,as.numeric 函数接受一个 \1 字符串(一个反斜杠和一个 1 字符)。因此,结果是预期的,NA

发生这种情况是因为 R 中没有内置的反向引用插值。

您可以使用 gsubfn包裹:

> library(gsubfn)
> s <- "x is 5"
> gsubfn("\\d+", function(x) as.numeric(x) + 1, s)
[1] "x is 6"

关于regex - 使用 sub 增加字符串中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com