[Pxr-commits] cambios en read.px

Oscar Perpiñan Lamigueiro oscar.perpinan at upm.es
Wed Aug 24 04:11:21 CEST 2011


Hola,

Al intentar abrir el fichero
http://www.ine.es/inebase/fic/px/l0/EPOB_es_6.px, ese que daba
problemas por su tamaño y que motivó el uso de useBytes=TRUE en
strsplit, he tenido problemas. R cometía una violación de segmento y
fuera. Revisando el código de read.px he visto que faltaba añadir
useBytes=TRUE en otra línea más. Al añadirlo he conseguido descargar el
fichero sin problemas. 

Sin embargo, la lectura del fichero tarda unos 10 segundos 
(con el fichero ya descargado en local). Revisando con
RProf he comprobado que la mayor carga se la llevan las funciones
break.clean y cleanDat tirando de strsplit. Se me ha ocurrido una forma
alternativa de extraer los valores numéricos de DATA$value: en lugar de
usar la combinación de strsplit y gsub que tenemos en cleanDat, uso una
combinación de textConnection con scan. Ahora tarda algo menos de 2
segundos en leer el fichero. Hay que especificar el "dot code" que se
usa como "missing". Veo que en el INE usan "." (por ejemplo,
http://www.ine.es/inebase/fic/px/l0/EPA_es_25.px), así que he añadido un
argumento adicional en read.px y le he asignado ese valor por defecto.

Por último, he añadido "encod.from='UTF-8'" en el ejemplo de read.px
para que los caracteres salgan bien.

Después de pasar el R CMD check, usar los ejemplos y descargar varios
ficheros de internet, todo va bien. Pero, por favor, probadlo vosotros.

¿Cuándo os parece bien que subamos una nueva versión a CRAN? Con las
nuevas funciones as.px y write.px, y los bugs arreglados parece que
toca, ¿no?

Saludos.

Oscar.

PD. Un comentario sin mayor importancia: veo que en parte del código
hay espacios alrededor de los paréntesis. A mí me resulta extraño y, la
verdad, algo incómodo para leer el código. ¿Los necesitáis así por
alguna razón? 


More information about the Pxr-commits mailing list