有一个字符串中包含(单个)数字。我想把数字加1。很简单,对吧?我写了以下内容,但没有再给它一个想法:使用子增加一个字符串中的数字
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
它为什么不起作用?我知道这样做的其他方式,所以我不需要“解决方案”。我想了解为什么这种方法失败。
如果没有gsub函数的回调能力,就无法工作。另一种方法是使用全局_search_在循环中重写字符串。 – sln
基本上,gsub的_substitute_字符串部分被用作带有backref'd正则表达式变量的模板,由_internal_回调(通常不可用)格式化。所以,你不能真正在函数的这个部分运行代码,即使是邪恶的eval(它不知道匹配)。 – sln