250 votos

¿Cómo puedo desactivar la notación científica?

Tengo un dataframe con una columna de valores p, y quiero hacer una selección en estos valores p.

> pvalues_anova
[1] 9.693919e-01 9.781728e-01 9.918415e-01 9.716883e-01 1.667183e-02
[6] 9.952762e-02 5.386854e-01 9.997699e-01 8.714044e-01 7.211856e-01
[11] 9.536330e-01 9.239667e-01 9.645590e-01 9.478572e-01 6.243775e-01
[16] 5.608563e-01 1.371190e-04 9.601970e-01 9.988648e-01 9.698365e-01
[21] 2.795891e-06 1.290176e-01 7.125751e-01 5.193604e-01 4.835312e-04

Forma de selección:

anovatest<- results[ - which(results$pvalues_anova < 0.8) ,]

La función funciona muy bien si la uso en R. Pero si la ejecuto en otra aplicación (galaxy), los números que no tienen e-01 por ejemplo 4.835312e-04 no son excluidos.

¿Existe otra forma de notar valores p, como 0.0004835312 en lugar de 4.835312e-04?

469voto

Sacha Epskamp Puntos 14956

Puedes eliminar efectivamente la notación científica en la impresión con este código:

options(scipen=999)

14voto

Peter Puntos 294
format(99999999,scientific = FALSE)

da

99999999

8voto

Resumiendo todas las respuestas existentes

(Y agregando algunos de mis puntos)

Nota: En la explicación a continuación, valor es el número que se debe representar en algún formato (entero/flotante).

Solución 1:

options(scipen=999)

Solución 2:

format(value, scientific=FALSE);

Solución 3:

as.integer(value);

Solución 4:

Puedes usar enteros que no se imprimen en notación científica. Puedes especificar que tu número es un entero poniendo una "L" detrás

paste(100000L)

imprimirá 100000

Solución 5:

Controla el formato de manera precisa usando 'sprintf()'

sprintf("%6d", 100000)

imprimirá 100000

Solución 6:

prettyNum(value, scientific = FALSE, digits = 16)

2voto

HBat Puntos 2502

También encuentro útil la función prettyNum(..., scientific = FALSE) para imprimir cuando no quiero ceros finales. Ten en cuenta que estas funciones son útiles para fines de impresión, es decir, la salida de estas funciones son cadenas de texto, no números.

p_value <- c(2.45496e-5, 3e-17, 5.002e-5, 0.3, 123456789.123456789)
format(p_value, scientific = FALSE)
#> [1] "        0.00002454960000000" "        0.00000000000000003"
#> [3] "        0.00005002000000000" "        0.29999999999999999"
#> [5] "123456789.12345679104328156"

format(p_value, scientific = FALSE, drop0trailing = TRUE)
#> [1] "        0.0000245496"        "        0.00000000000000003"
#> [3] "        0.00005002"          "        0.29999999999999999"
#> [5] "123456789.12345679104328156"

# Por favor, ten en cuenta que los dos últimos dígitos del último número están redondeados:
prettyNum(p_value, scientific = FALSE, digits = 16)
#> [1] "0.0000245496"        "0.00000000000000003" "0.00005002"
#> [4] "0.3"                 "123456789.1234568"

0voto

Efrain Puntos 1014

Hm... No estoy seguro de si entiendo completamente tu pregunta, pero sí, revisa la función 'format':

http://rss.acs.unt.edu/Rdoc/library/tutoR/html/format.html

es decir, reformatea tus resultados antes de manejarlos en tu aplicación externa.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X