有一個字符串中包含(單個)數字。我想把數字加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