La funzione print.default
esamina il valore options()['digits']
in "decidere" la larghezza da allocare, quindi potrebbe essere necessario aumentarlo e provare a eseguire il maxout di "scipen". Esistono problemi specifici del sistema operativo con valori superiori a 16 per quella larghezza. Per quanto riguarda la richiesta di virgole, ... lascia perdere. R non è un sistema di reporting finanziario. Se è necessario forzare questo formato di output, è possibile definire gli oggetti come appartenenti a una particolare classe e scrivere per loro metodi di stampa utilizzando sprintf e formatC, oppure suppongo che si possa riscrivere print.default, ma ciò potrebbe influire solo sulle operazioni di stampa che non erano passato a uno degli altri 100 metodi per print
.
Esistono metodi di output. formatC()
e prettyNum()
hanno entrambi un argomento "big.mark" che inserirà virgole in numeri. L'output è nel formato "character"
, quindi fare non provare a eseguire ulteriori calcoli sui risultati che si creano.
Ci sono anche metodi di input in grado di leggere colonne con i numeri contenenti virgole o simboli di valuta:
setAs("character", "num.with.commas", function(from) as.numeric(gsub(",", "", from)))
setAs("character", "euro",
function(from) as.numeric(gsub("€", "", from)))
setAs("character", "num_pct",
function(from) as.numeric(gsub("%", "", from))/100)
# you will get warning messages if you have not defined the class,
# .... but this will still succeed
Input <- "A B C
1,000 1% 3.50€
2,000 2% 4.77€
3,000 3% €5.68
"
DF <- read.table(textConnection(Input), header = TRUE,
colClasses = c("num.with.commas", "num_pct", "euro"))
str(DF)
fonte
2012-05-30 20:19:20
Per curiosità morbosa, perché? La doppia precisione è accurata solo a ~ 16 cifre, quindi tutto ciò che segue è arrotondato comunque. –
utilizzo contabilità – JoeJoe
Capisci la differenza tra ciò che viene visualizzato nella console e ciò che viene scritto in un file o in un'altra connessione? –