[R-br] Formatação com sprintf

Marcus Nunes marcus.nunes em gmail.com
Quarta Maio 7 13:11:01 BRT 2014


Rodei o comando

sprintf("%.14d", 1202342234)

e meu resultado foi

[1] "00001202342234"

Estou usando o R no Mac, então não sei se isto tem alguma influência no
resultado

> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] gstat_1.0-19

loaded via a namespace (and not attached):
 [1] FNN_1.1          grid_3.0.3       intervals_0.14.0 lattice_0.20-29
 [5] rgeos_0.3-4      sp_1.0-15        spacetime_1.1-0  tools_3.0.3
 [9] xts_0.9-7        zoo_1.7-11


2014-05-07 13:01 GMT-03:00 Rubem Kaipper Ceratti <rubem_ceratti em yahoo.com.br
>:

> Benilton,
>
> Obrigado pela resposta. Eu deveria ter especificado melhor, mas o que eu
> preciso é que o resultado final seja o número original precedido por zeros,
> ie,
>
> "000012023422344"
>
> em vez de
>
> > sprintf("%.14f", 12023422344)
> [1] "12023422344.00000000000000"
>
> Sei que é possível escrever uma função que faça essa manipulação, mas
> imagino que haja uma forma mais direta.
>
>
> Att.,
> Rubem
>   ------------------------------
>  *De:* Benilton Carvalho <beniltoncarvalho em gmail.com>
> *Para:* r-br <r-br em listas.c3sl.ufpr.br>; Rubem Kaipper Ceratti <
> rubem_ceratti em yahoo.com.br>
> *Enviadas:* Quarta-feira, 7 de Maio de 2014 12:26
> *Assunto:* Re: [R-br] Formatação com sprintf
>
> vc deve notar que o seu numero "12023422344", qdo representado no R, nao
> e' um inteiro...
>
> is.integer(12023422344)
>
> Entao, use a sugestao dada pelo proprio erro
>
> sprintf("%.14f", 12023422344)
>
> b
>
>
>
> Em 7 de maio de 2014 11:56, Rubem Kaipper Ceratti <
> rubem_ceratti em yahoo.com.br> escreveu:
>
> Caros listeiros,
>
> Tenho um problema que consiste em transformar um certo número para formato
> 'character' com comprimento 14. Para isso tentei usar a função
> base::sprintf, mas para números com mais de 10 dígitos, recebo a mensagem
> de erro abaixo:
>
> > sprintf('%.14d', 1202342234)
> [1] "00001202342234"
>
> > sprintf('%.14d', 12023422344)
> Error in sprintf("%.14d", 12023422344) :
>    invalid format '%.14d'; use format %f, %e, %g or %a for numeric objects
>
>
>  Alguém sabe uma forma de contornar isso?
>
>
> Grato,
> Rubem
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
>
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
Marcus Nunes
http://marcusnunes.me/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140507/b73bec80/attachment.html>


Mais detalhes sobre a lista de discussão R-br