Não ficou claro porque você não pode usar o gsub(). Eu tentei mudando o locale e deu certo para mim. Veja:
x <- sprintf("Matricula: %s \n Peso: %2.2f", '123.4', 47.5)
x
## Qualquer ponto por vírgula.
gsub("\\.", ",", x)
## Ponto entre números por vírgula.
gsub("(\\d)\\.(\\d)", "\\1,\\2", x)
## Sys.getlocale()
Sys.setlocale("LC_NUMERIC","pt_BR.utf8")
sprintf("Matricula: %s \n Peso: %2.2f", '123.4', 47.5)
À disposição.
Walmes.