La función print.default
observa el valor options()['digits']
al "decidir" qué ancho asignar, por lo que es posible que tenga que aumentarlo e intentar maximizar "scipen". Hay problemas específicos del sistema operativo con valores superiores a 16 para ese ancho. En cuanto a la solicitud de comas, ... olvídalo. R no es un sistema de información financiera. Si necesita forzar este formato de salida, puede definir objetos para que sean de una clase particular y escribir métodos de impresión para ellos usando sprintf y formatC, o supongo que puede reescribir print.default, pero eso solo podría afectar las operaciones de impresión que no fueron pasó a uno de los otros más de 100 métodos para print
.
Hay métodos de salida. formatC()
y prettyNum()
tienen un argumento 'big.mark' que insertará comas en números. La salida está en formato "character"
, por lo tanto, haga , no intente hacer más cálculos sobre los resultados que cree.
También hay métodos de entrada que podían leer las columnas con los números que contiene comas o los símbolos de moneda:
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)
Por curiosidad morbosa, ¿por qué? La precisión doble solo tiene una precisión de ~ 16 dígitos, por lo que todo lo que sigue se redondea de todos modos. –
uso de contabilidad – JoeJoe
¿Entiende la diferencia entre lo que se muestra en la consola y lo que se escribe en un archivo u otra conexión? –