¿Forzar a R a no usar la notación exponencial (por ejemplo, e+10)?


¿Puedo forzar a R a usar números regulares en lugar de usar la notación similar a e+10? Tengo:

1.810032e+09
# and 
4

Dentro del mismo vector y queremos ver:

1810032000
# and
4

Estoy creando una salida para un programa anticuado y tengo que escribir un archivo de texto usando cat. Eso funciona bien hasta ahora, pero simplemente no puedo usar la notación e+10 allí.

Author: Scarabee, 2012-02-22

4 answers

Esta es una zona un poco gris. Debe recordar que R siempre invocará un método de impresión, y estos métodos de impresión escuchan algunas opciones. Incluyendo 'scipen' penalty una pena por exhibición científica. De help(options):

' scipen': entero. Una penalización que se aplicará al decidir imprimir valores numéricos en notación fija o exponencial. Positivo sesgo de valores hacia fijo y negativo hacia científico notación: se preferirá la notación fija a menos que sea más que 'scipen' dígitos más anchos.

Ejemplo:

R> ran2 <- c(1.810032e+09, 4) 
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000          4

Dicho esto, todavía lo encuentro fudgeworthy. La forma más grave es usar sprintf() con ancho explícito.

 170
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-22 15:33:21

Se puede lograr desactivando la notación científica en R.

options(scipen = 999)
 103
Author: GingerJack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-30 17:15:41

Mi respuesta favorita:

format(1810032000, scientific = FALSE)
# [1] "1810032000"

Esto da lo que quieres sin tener que perder el tiempo en la configuración de R.

Tenga en cuenta que devuelve una cadena de caracteres en lugar de un objeto numérico

 34
Author: Danny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-26 21:43:51

Poner options(scipen = 999) en su .Rprofile file por lo que se ejecuta automáticamente por defecto. (No confíe en hacerlo manualmente.)

(Esto es decir algo diferente a otras respuestas: ¿cómo?

  1. Esto mantiene las cosas sanas cuando piensas entre múltiples proyectos, múltiples idiomas sobre una base diaria o mensual. Recordar escribir la configuración por proyecto es propenso a errores y no escalable. Puedes tener un ~/global.Rprofile o por proyecto .Rprofile. O ambos, con el este último anula el primero.
  2. Manteniendo toda su configuración en un proyecto global o global .Rprofile lo ejecuta automáticamente. Esto es útil para, por ejemplo, cargas de paquetes predeterminadas, datos.configuración de la tabla, entorno, etc. Una vez más, esa configuración puede ejecutarse en una página de ajustes, y no hay ninguna posibilidad de que recuerdes esos y su sintaxis y los escribas en
 -1
Author: smci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-27 08:30:46