Rのsub/gsubは先行評価らしい

・・・のかどうか分からないけど。Rのsub系は\1で*1マッチした文字列を展開してくれるのですが、これを関数の引数にしたりすることはできないらしい。あくまで文字列の一部にしか使えないと。うぐぅ
例えば

gsub("(\\d+)", "\\1abcde", txt, perl=TRUE)

みたいなコードはOKだけど

gsub("(\\d+)", as.integer(\\1), txt, perl=TRUE)

みたいなコードはNGになる。正確に言えば\\1を展開せずに\1という文字列を渡すのでNAになってしまう。うぐぅ。Rのことだからエレガントな解決方法があると信じたいが・・・挫けそうミル。

*1:実際は\をエスケープするので\\1みたいになるけど