¡Hola a todos! ¡Feliz año nuevo! Estoy manejando un "dataframe" en R y al seleccionar una de sus columnas y realizarle una operación me da un error. Es decir, # x es el data.frame> typeof(x)[1] "list"> typeof(x[,2])[1] "integer"> is.numeric(x[,2])[1] FALSE> x[,2]^2[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA Warning message: In Ops.factor(x[,2], 2) : ^ not meaningful for factors Como se puede ver, he comprobado si x[,2] es de tipo "numeric" y no lo es. Por lo que parece que ese es el problema...> x[,2][1] 1.75040388643097 1.46266054300156 1.14574311778771 1.50563112246927 1.26125788054806 [6] 1.03274597893501 1.31965932278776 1.20541552214039 1.16706555932031 0.991780166664227 [11] 1.20984033103383 1.11242669578012 0.948906091930533 0.772044728866751 0.698342568975424 [16] 0.963385389073382 0.896068410457464 0.982115544678638 1.0089516162929 0.958441419588456 [21] 0.730584039229933 0.805176729165249 0.919973067389947 1.0962660284375 24 Levels: 0.698342568975424 0.730584039229933 0.772044728866751 0.805176729165249 ... 1.75040388643097 Entonces intento convertirlo a tipo "numeric"...> as.numeric(x[,2])[1] 24 22 16 23 20 13 21 18 17 11 19 15 7 3 1 9 5 10 12 8 2 4 6 14 ¡Este es el problema! No lo hace bien, ¿no?. ¿Alguien sabe que está ocurriendo? Gracias por adelantado. Un saludo. -- Víctor Nalda Castellet [[alternative HTML version deleted]]
Hola, ¡Feliz Año! Prueba a convertir en vector as.numeric(*as.vector(x[,2])*) Y si puede ser posible, envía el conjunto o un subconjunto de los datos que manejas para ver si es que hay alguna otra cosa... Saludos, Carlos Ortega www.qualityexcellence.es El 2 de enero de 2014, 11:41, Víctor Nalda Castellet < victor.nalda.castellet@gmail.com> escribió:> ¡Hola a todos! ¡Feliz año nuevo! > > Estoy manejando un "dataframe" en R y al seleccionar una de sus columnas y > realizarle una operación me da un error. Es decir, > > # x es el data.frame > > typeof(x) > [1] "list" > > typeof(x[,2]) > [1] "integer" > > is.numeric(x[,2]) > [1] FALSE > > x[,2]^2 > [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA > Warning message: > In Ops.factor(x[,2], 2) : ^ not meaningful for factors > > Como se puede ver, he comprobado si x[,2] es de tipo "numeric" y no lo es. > Por lo que parece que ese es el problema... > > > x[,2] > [1] 1.75040388643097 1.46266054300156 1.14574311778771 1.50563112246927 > 1.26125788054806 > [6] 1.03274597893501 1.31965932278776 1.20541552214039 1.16706555932031 > 0.991780166664227 > [11] 1.20984033103383 1.11242669578012 0.948906091930533 > 0.772044728866751 0.698342568975424 > [16] 0.963385389073382 0.896068410457464 0.982115544678638 1.0089516162929 > 0.958441419588456 > [21] 0.730584039229933 0.805176729165249 0.919973067389947 1.0962660284375 > 24 Levels: 0.698342568975424 0.730584039229933 0.772044728866751 > 0.805176729165249 ... 1.75040388643097 > > Entonces intento convertirlo a tipo "numeric"... > > > as.numeric(x[,2]) > [1] 24 22 16 23 20 13 21 18 17 11 19 15 7 3 1 9 5 10 12 8 2 4 6 > 14 > > ¡Este es el problema! No lo hace bien, ¿no?. > > ¿Alguien sabe que está ocurriendo? > > Gracias por adelantado. Un saludo. > > -- > Víctor Nalda Castellet > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Hola Carlos, el resultado que obtengo con la respuesta que me has dado es el que esperaba:> as.numeric(as.vector(x))[1] 1.7504039 1.4626605 1.1457431 1.5056311 1.2612579 1.0327460 1.3196593 1.2054155 1.1670656 0.9917802 [11] 1.2098403 1.1124267 0.9489061 0.7720447 0.6983426 0.9633854 0.8960684 0.9821155 1.0089516 0.9584414 [21] 0.7305840 0.8051767 0.9199731 1.0962660 Pero pierdo precisión en los decimales.> x[1] 1.75040388643097 1.46266054300156 1.14574311778771 1.50563112246927 1.26125788054806 [6] 1.03274597893501 1.31965932278776 1.20541552214039 1.16706555932031 0.991780166664227 [11] 1.20984033103383 1.11242669578012 0.948906091930533 0.772044728866751 0.698342568975424 [16] 0.963385389073382 0.896068410457464 0.982115544678638 1.0089516162929 0.958441419588456 [21] 0.730584039229933 0.805176729165249 0.919973067389947 1.0962660284375 24 Levels: 0.698342568975424 0.730584039229933 0.772044728866751 0.805176729165249 ... 1.75040388643097 ¿Cómo se puede solucionar? ¡Muchísimas gracias por la ayuda! El 2 de enero de 2014, 11:47, Carlos Ortega <cof@qualityexcellence.es>escribió:> Hola, > > ¡Feliz Año! > > Prueba a convertir en vector as.numeric(*as.vector(x[,2])*) > Y si puede ser posible, envía el conjunto o un subconjunto de los datos > que manejas para ver si es que hay alguna otra cosa... > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 2 de enero de 2014, 11:41, Víctor Nalda Castellet < > victor.nalda.castellet@gmail.com> escribió: > >> ¡Hola a todos! ¡Feliz año nuevo! >> >> Estoy manejando un "dataframe" en R y al seleccionar una de sus columnas y >> realizarle una operación me da un error. Es decir, >> >> # x es el data.frame >> > typeof(x) >> [1] "list" >> > typeof(x[,2]) >> [1] "integer" >> > is.numeric(x[,2]) >> [1] FALSE >> > x[,2]^2 >> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA >> NA >> Warning message: >> In Ops.factor(x[,2], 2) : ^ not meaningful for factors >> >> Como se puede ver, he comprobado si x[,2] es de tipo "numeric" y no lo es. >> Por lo que parece que ese es el problema... >> >> > x[,2] >> [1] 1.75040388643097 1.46266054300156 1.14574311778771 >> 1.50563112246927 >> 1.26125788054806 >> [6] 1.03274597893501 1.31965932278776 1.20541552214039 >> 1.16706555932031 >> 0.991780166664227 >> [11] 1.20984033103383 1.11242669578012 0.948906091930533 >> 0.772044728866751 0.698342568975424 >> [16] 0.963385389073382 0.896068410457464 0.982115544678638 1.0089516162929 >> 0.958441419588456 >> [21] 0.730584039229933 0.805176729165249 0.919973067389947 1.0962660284375 >> 24 Levels: 0.698342568975424 0.730584039229933 0.772044728866751 >> 0.805176729165249 ... 1.75040388643097 >> >> Entonces intento convertirlo a tipo "numeric"... >> >> > as.numeric(x[,2]) >> [1] 24 22 16 23 20 13 21 18 17 11 19 15 7 3 1 9 5 10 12 8 2 4 6 >> 14 >> >> ¡Este es el problema! No lo hace bien, ¿no?. >> >> ¿Alguien sabe que está ocurriendo? >> >> Gracias por adelantado. Un saludo. >> >> -- >> Víctor Nalda Castellet >> >> [[alternative HTML version deleted]] >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >-- Víctor Nalda Castellet [[alternative HTML version deleted]]