[R-es] Loop sobre muchos data frames

Jorge I Velez jorgeivanvelez en gmail.com
Lun Abr 13 02:15:46 CEST 2015


Hola Oscar,

A lo mejor este equivocado, pero creo que necesitas

read.table(bNames[[i]])

en lugar de

bNames[[i]]

Como esta, bNames[[i]] corresponde al nombre del corupus, no al corpus como
tal.

Nos ayudaria muchisimo el resultado de

str(bNames)

Saludos cordiales,
Jorge.-


2015-04-13 9:25 GMT+10:00 Oscar Benitez <oscar.benitez1962 en gmail.com>:

> Jorge, estimados colaboradores de R-help
>
> Estuve tratando de utilizar un script para uno de los pasos en mi
> análisis, que es transformar cada uno de los corpus en mi espacio de
> trabajo en un objeto TermDocumentMatrix
>
> Tengo un vector llamado bNames que lista todos los corpus que quiero pasar
> a TDM, y construí los siguientes comandos:
>
> tdm.n1 <- vector('list', length = length(bNames))
>
> for(i in seq_along(tdm.n1)){
>   tdm.n1.[[i]] <-
> TermDocumentMatrix(bNames[[i]],control=list(tokenize=nGram1Tok))
> }
>
> pero obtengo el siguiente error:
>
> Error in UseMethod("TermDocumentMatrix", x) :
>   no applicable method for 'TermDocumentMatrix' applied to an object of
> class "character"
>
> entonces revisé qué es lo que bNames[[i]] le está pasando al for
>
> bNames[[1]]
> [1] "qB001"
>
> Una cadena de texto, no el corpus llamado "qB001"!!, por eso obtengo el
> error.
> Alguien se le ocurre cómo hacer para que lea cada uno de los objetos en la
> lista y se los pase de a uno a la función?
> Muchas gracias por adelantado
> Oscar
>
>
>
>
>
>
> El 10 de abril de 2015, 11:28, Jorge I Velez <jorgeivanvelez en gmail.com>
> escribió:
>
>> Oscar,
>>
>> Cambia
>>
>> (l[i])
>>
>> por
>>
>> read.table(l[i])
>>
>> Olvide leer cada archivo en el codigo anterior.
>>
>> Saludos,
>> Jorge.-
>>
>> 2015-04-11 0:02 GMT+10:00 Oscar Benitez <oscar.benitez1962 en gmail.com>:
>>
>>> Jorge
>>> Gracias por el consejo. Aparentemente no lo estoy aplicando bien, pues
>>> el objeto que obtengo no contiene lo que quiero.
>>> Me explico, al ejecutar
>>>
>>> txt <- vector('list', length = length(names)) #names el el vector donde
>>> ya tenía almacenada la lista de txt's
>>> for(i in seq_along(txt)){
>>>   txt[[i]] <- Corpus(VectorSource(names[i]))
>>> }
>>>
>>> obtengo el objeto txt:
>>> > class(txt)
>>> [1] "list"
>>>
>>> si extraigo solamente el primer objeto de esa lista:
>>> > txt[[1]]
>>> <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>>
>>>
>>> si quiero ver el contenido del primer copus
>>>
>>> > inspect(txt[[1]])
>>> <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>>
>>>
>>> [[1]]
>>> <<PlainTextDocument (metadata: 7)>>
>>> qB001.txt
>>>
>>> me informa cosas sobre el objeto, pero los datos no están allí...
>>> debería mostrarme algo así como:
>>>
>>> inspect(cbD02[1:1]) #inspecciono el corpus cbD120, creado a mano por la
>>> sentencia cbD120<-Corpus(VectorSource(qT120))
>>>
>>> #......contenido del corpus......
>>> I went to go see some gypsy to tell me my future, but she asked for my
>>> photograph instead.
>>> itz me the one who was talkin to u last time !!!
>>> starts at 4pm. come get sunny munny :)
>>> kind of scary to imagine what needs military wiping!!!!
>>> #.....más.contenido del corpus......
>>>
>>>
>>> si quiero aplicarle un función propia de limpieza de corpus, por ejemplo
>>> eliminar los números presentes en el corpus
>>> > tm_map(txt[[1]], removeNumbers)
>>> <<VCorpus (documents: 1, metadata (corpus/indexed): 0/0)>>
>>>
>>> no hace nada de nada...
>>>
>>> Saludos
>>>
>>> Oscar
>>>
>>>
>>>
>>>
>>>
>>> El 10 de abril de 2015, 1:15, Jorge I Velez <jorgeivanvelez en gmail.com>
>>> escribió:
>>>
>>>> Oscar,
>>>>
>>>> Una forma de trabajar con este tipo de archivos es utilizando listas:
>>>>
>>>> # directorio del proyecto
>>>> setwd('~/proyecto')
>>>>
>>>> # archivos de texto
>>>> l <- list.files(pattern = '.txt')
>>>>
>>>> # procesamiento
>>>> txt <- vector('list', length = length(l))
>>>> for(i in seq_along(txt)){
>>>> txt[[i]] <- Corpus(VectorSource(l[i]))
>>>> }
>>>>
>>>> # para acceder a la informacion del primero archivo, solo debes escribir
>>>> txt[[1]]
>>>>
>>>>
>>>> Espero sea de utilidad.
>>>>
>>>> Saludos,
>>>> Jorge.-
>>>>
>>>>
>>>> 2015-04-10 14:14 GMT+10:00 Oscar Benitez <oscar.benitez1962 en gmail.com>:
>>>>
>>>>> Hola a todos!
>>>>> Estoy en un proyecto de text mining y por razones de los recursos con
>>>>> que
>>>>> cuento tuve que separar los archivos de texto de input del proyecto en
>>>>> muchos archivos pequeños.
>>>>> Luego de transformar cada uno de estos archivos en un corpus separado,
>>>>> puedo aplicar limpieza sobre cada corpus, buscar n-gramas, construir
>>>>> cada
>>>>> termDocumentMatrix y finalmente reunir todo en una sola TDM.
>>>>>
>>>>> Pero estoy atorado en el paso de transformar cada uno de los archivos
>>>>> en
>>>>> corpus mediante un loop. Es decir que en lugar de hacer esto infinitas
>>>>> veces:
>>>>>
>>>>> #Librerias necesarias
>>>>> library(tm)
>>>>>
>>>>> corpus_001<-Corpus(VectorSource(qBlog001))
>>>>> corpus_002<-Corpus(VectorSource(qBlog002))
>>>>> corpus_003<-Corpus(VectorSource(qBlog003))
>>>>> .........
>>>>> corpus_150<-Corpus(VectorSource(qBlog150))
>>>>> ........
>>>>>
>>>>> quisiera poder armar un loop que haga el trabajo, como por ejemplo
>>>>>
>>>>>
>>>>>
>>>>> #lista con los nombres que quiero para cada corpus
>>>>> c_names <- paste("corpus_",formatC(seq(length(bNames)),
>>>>>                                                 width=3, flag="0"),
>>>>> sep="")
>>>>>
>>>>> donde bNames es la lista de los df que tengo cargados "qBlog001"
>>>>> "qBlog002"..."qBlog150"...
>>>>>
>>>>> algo así es lo que tengo en mente:
>>>>>
>>>>> for (i in bNames) {
>>>>>   for (j in c_names) {
>>>>>     j<- Corpus(VectorSource(i))
>>>>>   }
>>>>> }
>>>>>
>>>>> Pero no funciona, he probado con lapply, con sapply, con llply de la
>>>>> librería (plyr) y no encuentro la manera de hacerlo..
>>>>> Cualquier sugerencia sera bienvenida!
>>>>> Muchas gracias por adelantado!
>>>>>
>>>>>
>>>>> --
>>>>> Oscar Benitez
>>>>>
>>>>>         [[alternative HTML version deleted]]
>>>>>
>>>>> _______________________________________________
>>>>> R-help-es mailing list
>>>>> R-help-es en r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Oscar Benitez
>>>
>>
>>
>>
>
>
> --
> Oscar Benitez
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es