文字列の中に(単一の)番号が付いています。私は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_文字列部分は、_reternal_コールバック(通常は利用できません)によってフォーマットされるように、バックリファレンスの正規表現変数を持つテンプレートとして使用されています。だから、関数のこの部分の中でコードを実際に実行することはできません。 – sln