Alfredo David Alvarado Ríos
2014-Jul-22 21:29 UTC
[R-es] Ayuda Error in `colnames<-`(`*tmp*`, value = c(
Buenas tardes, grupo. Estoy tratando de hacer la comparación de dos archivos de una misma organización para encontrar las diferencias entre su informe del tema edl año 2005 y el del año 2013: Todos los comandos van bien, a exepción del último "colnames", como se ve en la siguiente secuencia:> pdf1<-"./PLAN de INSPECCIONES/05_seguridad_ciudadana.pdf" > pdf2<-"./PLAN de INSPECCIONES/2013_21SeguridadCiudadana.pdf" > exe<-"./xpdfbin-win-3.04/xpdfbin-win-3.04/bin32/pdftotext.exe" > system(paste("\"", exe, "\" \"", pdf1, "\"", sep = ""), wait = F) > system(paste("\"", exe, "\" \"", pdf2, "\"", sep = ""), wait = F) > txt1<-sub(".pdf", ".txt", pdf1) > txt2<-sub(".pdf", ".txt", pdf2) > d1<-readLines(txt1, encoding="UTF-8") > d1<-iconv(enc2utf8(d1), sub = "byte") > d2<-readLines(txt2, encoding="UTF-8") > d2<-iconv(enc2utf8(d2), sub = "byte") > df<-c(d1,d2) > corpus<-Corpus(VectorSource(df)) > d<-tm_map(corpus, content_transformer(tolower)) > d<-tm_map(d, stripWhitespace) > d<-tm_map(d, removePunctuation) > sw<-readLines("./StopWords.txt", encoding="UTF-8") > sw<-iconv(enc2utf8(sw), sub="byte") > d<-tm_map(d, removeWords, sw) > d<-tm_map(d, removeWords, stopwords("spanish")) > tdm<-TermDocumentMatrix(d) > m<-as.matrix(tdm) > colnames(m) = c("P05", "P13")Error in `colnames<-`(`*tmp*`, value = c("P05", "P13")) : length of 'dimnames' [2] not equal to array extent Mi pregunta es acerca de ese error. Por lo que entiendo, R no puede correr exitosamente el comando que se le indica porque la longitud de los valores P05 y P13 (los dos informes) no es la misma para el sistema. Alguna ayuda que pueda orientarme al respecto, por favor? Lo que necesito es hacer esa tarea con colnames para poder seguir con el ejercicio comparativo. Muchas gracias por la ayuda.
Supongo que estas usando el paquete tm. Con ese paquete llegas sin errores a la matriz m. Aparentemente tu crees que la matriz m tiene dos columnas.Te podria ser util ver que pasa con esa matriz, por ejemplo con str(m). Espero te sirva, Daniel Merino El 22 de julio de 2014, 18:29, Alfredo David Alvarado Ríos < david.alvarado.r@gmail.com> escribió:> Buenas tardes, grupo. > Estoy tratando de hacer la comparación de dos archivos de una misma > organización para encontrar las diferencias entre su informe del tema > edl año 2005 y el del año 2013: > > > Todos los comandos van bien, a exepción del último "colnames", como se > ve en la siguiente secuencia: > > > pdf1<-"./PLAN de INSPECCIONES/05_seguridad_ciudadana.pdf" > > pdf2<-"./PLAN de INSPECCIONES/2013_21SeguridadCiudadana.pdf" > > exe<-"./xpdfbin-win-3.04/xpdfbin-win-3.04/bin32/pdftotext.exe" > > system(paste("\"", exe, "\" \"", pdf1, "\"", sep = ""), wait = F) > > system(paste("\"", exe, "\" \"", pdf2, "\"", sep = ""), wait = F) > > txt1<-sub(".pdf", ".txt", pdf1) > > txt2<-sub(".pdf", ".txt", pdf2) > > d1<-readLines(txt1, encoding="UTF-8") > > d1<-iconv(enc2utf8(d1), sub = "byte") > > d2<-readLines(txt2, encoding="UTF-8") > > d2<-iconv(enc2utf8(d2), sub = "byte") > > df<-c(d1,d2) > > corpus<-Corpus(VectorSource(df)) > > d<-tm_map(corpus, content_transformer(tolower)) > > d<-tm_map(d, stripWhitespace) > > d<-tm_map(d, removePunctuation) > > sw<-readLines("./StopWords.txt", encoding="UTF-8") > > sw<-iconv(enc2utf8(sw), sub="byte") > > d<-tm_map(d, removeWords, sw) > > d<-tm_map(d, removeWords, stopwords("spanish")) > > tdm<-TermDocumentMatrix(d) > > m<-as.matrix(tdm) > > colnames(m) = c("P05", "P13") > Error in `colnames<-`(`*tmp*`, value = c("P05", "P13")) : > length of 'dimnames' [2] not equal to array extent > > Mi pregunta es acerca de ese error. Por lo que entiendo, R no puede > correr exitosamente el comando que se le indica porque la longitud de > los valores P05 y P13 (los dos informes) no es la misma para el > sistema. > > Alguna ayuda que pueda orientarme al respecto, por favor? Lo que > necesito es hacer esa tarea con colnames para poder seguir con el > ejercicio comparativo. Muchas gracias por la ayuda. > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel [[alternative HTML version deleted]]
Alfredo, Insisto que me parece que usas el paquete tm o alguno similar de text mining. No uso ese paquete frecuentemente, por lo que recuerdo tenia sus funciones especiales. Intenta armar un ejemplo reproducible con algun texto que se pueda compartir. respecto de los dimnames, colnames y rownames de una matriz espero este ejemplo te sirva: m <- matrix( c(1,2,3,4), ncol=2, dimnames=list( fila = c('1','2'), columna = c('A', 'B'))) m str(m) class(m) Daniel Merino El 23 de julio de 2014, 14:59, Alfredo David Alvarado Ríos < david.alvarado.r@gmail.com> escribió:> Buenas tardes Daniel, estoy muy agradecido por tu atención y tu > sugerencia. En ese sentido, copio lo que devuelve la consola con la > orden que me recomendaste: > > > m<-as.matrix(tdm) > > str(m) > num [1:3530, 1:1224] 0 0 0 0 0 0 0 0 0 0 ... > - attr(*, "dimnames")=List of 2 > ..$ Terms: chr [1:3530] "000" "010405" "010705" "011004" ... > ..$ Docs : chr [1:1224] "1" "2" "3" "4" ... > > Aparentemente, la matriz está conformada por una lista de 2 objetos, > d1 y d2, no es cierto? Me equivoco? La diferencia es que uno es una > especie de secuencia del 1 al 3530 y el otro del 1 al 1224. > > Alguna otra idea? > > He tratado de ubicar información que me sirva al respecto. > > En este momento, me pregunto si tiene que ver con la opción dimnames, > que según leí es por defecto NULL en el comando matrix, que me parece > es lo que lleva a cabo el comando as.matrix, sólo que asumiendo todas > las opciones por defecto que trae el comando. Y realmente no logro > ubicar si el asunto lo resuelvo con as.matrix, matrix, o por colnames. > > Lancé un comando para ver si lo veía como una matrix: > > > is.matrix(m) > [1] TRUE > > > Experimenté con: > > m<-as.matrix((tdm), dimnames=list) ## Y no sirvió. > > > m<-as.matrix(tdm, ncol=2, dimnames=list) ## Y tampoco sirvió. > > colnames(m) = c("P05", "P13") > Error in `colnames<-`(`*tmp*`, value = c("P05", "P13")) : > length of 'dimnames' [2] not equal to array extent > > > Sigo buscando información, pero aún no doy con algo que me indique por > donde puedo resolverlo. > Gracias anticipadas. > > > El día 22 de julio de 2014, 18:11, daniel <daniel319@gmail.com> escribió: > > Supongo que estas usando el paquete tm. Con ese paquete llegas sin > errores a > > la matriz m. Aparentemente tu crees que la matriz m tiene dos columnas.Te > > podria ser util ver que pasa con esa matriz, por ejemplo con str(m). > > > > Espero te sirva, > > > > Daniel Merino > > > > > > El 22 de julio de 2014, 18:29, Alfredo David Alvarado Ríos > > <david.alvarado.r@gmail.com> escribió: > >> > >> Buenas tardes, grupo. > >> Estoy tratando de hacer la comparación de dos archivos de una misma > >> organización para encontrar las diferencias entre su informe del tema > >> edl año 2005 y el del año 2013: > >> > >> > >> Todos los comandos van bien, a exepción del último "colnames", como se > >> ve en la siguiente secuencia: > >> > >> > pdf1<-"./PLAN de INSPECCIONES/05_seguridad_ciudadana.pdf" > >> > pdf2<-"./PLAN de INSPECCIONES/2013_21SeguridadCiudadana.pdf" > >> > exe<-"./xpdfbin-win-3.04/xpdfbin-win-3.04/bin32/pdftotext.exe" > >> > system(paste("\"", exe, "\" \"", pdf1, "\"", sep = ""), wait = F) > >> > system(paste("\"", exe, "\" \"", pdf2, "\"", sep = ""), wait = F) > >> > txt1<-sub(".pdf", ".txt", pdf1) > >> > txt2<-sub(".pdf", ".txt", pdf2) > >> > d1<-readLines(txt1, encoding="UTF-8") > >> > d1<-iconv(enc2utf8(d1), sub = "byte") > >> > d2<-readLines(txt2, encoding="UTF-8") > >> > d2<-iconv(enc2utf8(d2), sub = "byte") > >> > df<-c(d1,d2) > >> > corpus<-Corpus(VectorSource(df)) > >> > d<-tm_map(corpus, content_transformer(tolower)) > >> > d<-tm_map(d, stripWhitespace) > >> > d<-tm_map(d, removePunctuation) > >> > sw<-readLines("./StopWords.txt", encoding="UTF-8") > >> > sw<-iconv(enc2utf8(sw), sub="byte") > >> > d<-tm_map(d, removeWords, sw) > >> > d<-tm_map(d, removeWords, stopwords("spanish")) > >> > tdm<-TermDocumentMatrix(d) > >> > m<-as.matrix(tdm) > >> > colnames(m) = c("P05", "P13") > >> Error in `colnames<-`(`*tmp*`, value = c("P05", "P13")) : > >> length of 'dimnames' [2] not equal to array extent > >> > >> Mi pregunta es acerca de ese error. Por lo que entiendo, R no puede > >> correr exitosamente el comando que se le indica porque la longitud de > >> los valores P05 y P13 (los dos informes) no es la misma para el > >> sistema. > >> > >> Alguna ayuda que pueda orientarme al respecto, por favor? Lo que > >> necesito es hacer esa tarea con colnames para poder seguir con el > >> ejercicio comparativo. Muchas gracias por la ayuda. > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > > > > > -- > > Daniel >-- Daniel [[alternative HTML version deleted]]