voglio formattare i numeri nei miei rapporti di significant digits, ma tenere finali zeri significativi e formattare correttamente un gran numeronumeri FORMAT per cifre significative bene in R
Per esempio i numeri c (10.00001,12345,1234.5,123.45, 1.2345,0.12345) a 3 cifre significative dovrebbero essere 10,0, 12300, 1230, 123, 1.23, 0.123 ma ottengo diversi risultati con metodi diversi (e nessuno sembra funzionare universaly.
> numbers<-c(10.00001,12345,1234.5,123.45,1.2345,0.12345)
> for(n in seq(numbers)){
+ print(signif(numbers[n],digits=3))
+ print(format(numbers[n],digits=3))
+ print(formatC(numbers[n], digits=3,format="fg"))
+ print(formatC(numbers[n], digits=3,format="fg", flag="#"))
+ }
[1] 10
[1] "10"
[1] " 10"
[1] "10.0"
[1] 12300
[1] "12345"
[1] "12345"
[1] "12345."
[1] 1230
[1] "1234"
[1] "1234"
[1] "1234."
[1] 123
[1] "123"
[1] " 123"
[1] "123."
[1] 12.3
[1] "12.3"
[1] "12.3"
[1] "12.3"
[1] 1.23
[1] "1.23"
[1] "1.23"
[1] "1.23"
[1] 0.123
[1] "0.123"
[1] "0.123"
[1] "0.123"
Qui, rotondo signif e il formato il risultato 10.00001 formatoC con flag = "#" correttamente fa i numeri piccoli ma non i numeri grandi
C'è un modo migliore?
provare anche applicare, lapply e sapply invece di looping ... –
io possa avere un errore concettuale lordo, ma non la 'apply' famiglia di funzioni ancora utilizzare i cicli? Ma astrae i loop per il codice è più pulito e più facile da leggere, con meno di pulizia. Destra? –
Mi spiace, il ciclo è lì solo per mostrare i risultati, avevo originariamente signif (numeri, cifre = 3) ma che per impostazione predefinita si riferiva alla notazione scientifica per qualche motivo. – PaulHurleyuk