Senhores, boa tarde!
O problema de mudar o local realmente tem a ver com o Sistema Operacional. Pelo que entendi do artigo indicado a seguir, no Windows só há uma codepage válida pra cada linguagem. No caso do português é a codepage 1252. No linux é possível trocar a codepage pra linguagem, p. ex. pra utf-8 ou ISO-8859-1. Mais detalhes no artigo:
Como paliativo sugiro intermediar com formatC(). Segue exemplo:
### <code r>
val <- formatC(1247.51, format='f', decimal.mark=',', big.mark = ".", digits=2)
sprintf("Matricula: %s \n Peso: %s", '123.4', val)
### </code>
O comando formatC() entende os números corretamente e pode evitar os problemas anteriormente citados com uso de gsub().