[R-es] Loop sobre muchos data frames

Isidro Hidalgo Arellano ihidalgo en jccm.es
Lun Abr 13 07:35:49 CEST 2015


get() y assign(), mira la ayuda de las dos funciones y tendrás lo que
buscas.
Un saludo.
Isidro



> El 13/4/2015, a las 1:25, Oscar Benitez  escribió:
> 
> 
> 
> 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  
> 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 
> 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 :
> >
> >> 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  >> ya tenía almacenada la lista de txt's
> >> for(i in seq_along(txt)){
> >> txt[[i]]  >> }
> >>
> >> obtengo el objeto txt:
> >> > class(txt)
> >> [1] "list"
> >>
> >> si extraigo solamente el primer objeto de esa lista:
> >> > txt[[1]]
> >> 
> >>
> >> si quiero ver el contenido del primer copus
> >>
> >> > inspect(txt[[1]])
> >> 
> >>
> >> [[1]]
> >> 
> >> 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 >>
> >> #.......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)
> >> 
> >>
> >> no hace nada de nada...
> >>
> >> Saludos
> >>
> >> Oscar
> >>
> >>
> >>
> >>
> >>
> >> El 10 de abril de 2015, 1:15, Jorge I Velez 
> >> escribió:
> >>
> >>> Oscar,
> >>>
> >>> Una forma de trabajar con este tipo de archivos es utilizando
listas:
> >>>
> >>> # directorio del proyecto
> >>> setwd('~/proyecto')
> >>>
> >>> # archivos de texto
> >>> l  >>>
> >>> # procesamiento
> >>> txt  >>> for(i in seq_along(txt)){
> >>> txt[[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 :
> >>>
> >>>> 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_002 >>>> corpus_003 >>>> .........
> >>>> corpus_150 >>>> ........
> >>>>
> >>>> quisiera poder armar un loop que haga el trabajo, como por
ejemplo
> >>>>
> >>>>
> >>>>
> >>>> #lista con los nombres que quiero para cada corpus
> >>>> c_names  >>>> 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 >>>> }
> >>>> }
> >>>>
> >>>> 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]]
> 
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


	[[alternative HTML version deleted]]



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