・・・のかどうか分からないけど。Rのsub系は\1で*1マッチした文字列を展開してくれるのですが、これを関数の引数にしたりすることはできないらしい。あくまで文字列の一部にしか使えないと。うぐぅ。
例えば
gsub("(\\d+)", "\\1abcde", txt, perl=TRUE)
みたいなコードはOKだけど
gsub("(\\d+)", as.integer(\\1), txt, perl=TRUE)
みたいなコードはNGになる。正確に言えば\\1を展開せずに\1という文字列を渡すのでNAになってしまう。うぐぅ。Rのことだからエレガントな解決方法があると信じたいが・・・挫けそうミル。