Esta pregunta tal vez ha sido respondida anteriormente, pero no he visto una respuesta.R: entero versus numérico
Tengo un conjunto de datos que consta de números y valores faltantes. Una fila es un porcentaje. A continuación se muestra un pequeño conjunto de datos falsos donde AA, BB y CC son los nombres de las columnas. La tercera fila en este conjunto de datos es el porcentaje.
AA BB CC
234 432 78
1980 3452 2323
91.1 90 93.3
34 123 45
En este caso, cuando leo el conjunto de datos AA y CC son numéricos y BB es un número entero. Supongo que en algún lugar 90.0 se redondeó a 90. Si no especifico que BB es numérico, ¿podría esto causar problemas con la aritmética básica?
Creo que si dd = 1 y ee = 2 y ambos son enteros, entonces el lenguaje C dice dd/ee = 0, mientras que R dice dd/ee = 0.5.
A continuación se muestra una serie de operaciones matemáticas simples que todas parecen indicar que las respuestas en R no se modifican independientemente de si los datos son numéricos o enteros. Sin embargo, sigo pensando que sería inteligente especificar que todas las variables sean numéricas al leer los datos. Utilizando Google, he encontrado uno o dos ejemplos en los que el tipo de datos parecía marcar la diferencia, pero no a continuación.
aa <- c(1,2,3,4,5,6,7)
bb <- 2
str(aa)
str(bb)
cc <- as.integer(aa)
dd <- as.integer(bb)
str(cc)
str(dd)
aa/bb
cc/dd
aa/dd
cc/bb
ee <- aa * aa
str(ee)
sum(ee/2)
ff <- cc * cc
str(ff)
sum(ff/2)
gg <- 4.14
hh <- ((aa * aa) * gg)/2
hh
ii <- ((cc * cc) * gg)/2
ii
jj <- (aa * aa)/gg
jj
kk <- (cc * cc)/gg
kk
jj == kk
mm <- as.integer(1)
nn <- as.integer(2)
mm/nn
Supongo que espero que esto no sea un problema con las matemáticas simples, pero sospecho que sí. Sigo pensando que aquí hay una regla fundamental de programación, pero no estoy seguro de qué es eso. (Soy consciente del concepto de doble precisión.)
Gracias por cualquier consejo con lo que sin duda es un problema básico.