[R-es] Funcion para una tabla de frecuencias

Pablo Emilio Verde PabloEmilio.Verde en uni-duesseldorf.de
Vie Nov 20 16:32:05 CET 2009


Basicamente, la funcion "attach()" es un componente estable del lenguage
y por eso hay que mantenerla.

Pero, el tema de discusion es si a futuros usuarios se les debe o no
enseñar el uso de "attach()". Lo mismo vale para gente que no tiene
mucha experiencia dando cursos de R y tiene que tomar esta decision.

Mi opinion es que *SI* hay que enseñar el uso de "attach()" y contrastarla
con "with()".

Pablo


----- Original Message -----
From: "Kjetil Halvorsen" <kjetil1001 en gmail.com>
To: "Pablo Emilio Verde" <PabloEmilio.Verde en uni-duesseldorf.de>
Cc: <r-help-es en r-project.org>
Sent: Friday, November 20, 2009 3:52 PM
Subject: Re: [R-es] Funcion para una tabla de frecuencias


2009/11/20 Pablo Emilio Verde <PabloEmilio.Verde en uni-duesseldorf.de>

> Hola,
>
> Si, el tema es fundamental para las clases de estadistica introductoria.
>
> Algo que note es lo siguiente, la funcion "graph.freq()" del paquete
> "agricolae" es la funcion "hist()" del paquete "graphics" standard.
> Exactamente la misma! La funcion "table.freq()" te agrega la tabla
> que necesitabas.
>
> Podes probar:
>
> library(agricolae)
> set.seed(123)
>   x <- rnorm(100, mean = 2, sd=1)
> tmp <- hist(x, plot=FALSE)
> table.freq(tmp)
>
> Como tema marginal salio la discusion del uso de "with()" o "attach()".
> Indudablemente, ni uno ni otro es mejor, ni uno ni otro es arcaico.
> Entiendo
> que, si deberian estar en desuso, entonces no formarian parte del sistema.
>

     Esto no es necesariamente correcto. Una función como "attach" que ha
existido
     mucho tiempo, y que esta mencionado en muchos libros,
     es muy dificil de remover del sistema.

Kjetil


>
> El tema pasa, por el contexto en el que se utiilzan. Claramente, si
> necesitamos
> la asignacion de un data.frame en forma global utilizanos "attach()". De
lo
> contrario si la asignacion es local "with()" es mas efectivo.
>
> El peligro de utilizar "attach()" en forma indescriminada, es que se
pueden
> enmascarar variables que no necesitamos en un analisis y entiendo que R
> no siempre nos avisa! Asi que su uso requiere de mas cuidado y el uso
> conjunto de "detach()".
>
> Cuando hago un analisis de datos de mucha responsabilidad, no utilizo
> ni uno ni otro. Para mi, lo mas importante es que el uso de variables sea
> absolutamente explicito y uso "$". No es muy elegante, pero almenos es
> una decision "mini-max".
>
> Pablo
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ----- Original Message -----
> From: "J. Miguel Marin" <jmmarin en est-econ.uc3m.es>
> To: <r-help-es en r-project.org>
> Sent: Friday, November 20, 2009 11:57 AM
> Subject: Re: [R-es] Funcion para una tabla de frecuencias
>
>
> Hola,
>
> muchas gracias por vuestra ayuda.
> Quizás lo que dice Teresa es lo que mejor se adapta a lo que yo
> buscaba: tablas introductorias como aparecen en los textos básicos y
> que suelen recoger los programas comerciales como opciones inmediatas.
>
> También eran muy interesantes los consejos sobre programación aunque mi
> idea era tratar de introducir el R de una manera competitiva respecto a
> los programas comerciales, aunque eso implique tomar opciones menos
> ortodoxas.
>
> Un saludo
>
> > Hola, yo te respondo sobre las tablas de frecuencia: en la libreria
> > agricolae hay una función muy simple que hace las tablas como se suelen
> > enseñar en los cursos introductorios, ademas podes asociarle facilmente
> el
> > histograma correspondiente, acá va del ejemplo del paquete:
> >
> >
> > library(agricolae)
> > data(growth)
> > attach(growth)
> > h2<-graph.freq(height,plot=FALSE)
> > table.freq(h2)
> >
> >
> > saludos, teresa
> >
> >
> > El 16 de noviembre de 2009 16:25, Kjetil Halvorsen
> > <kjetil1001 en gmail.com>escribió:
> >
> >> Respono yo mismo, para eludivar cuan "evil" es attach()
> >>
> >> 2009/11/16 Kjetil Halvorsen <kjetil1001 en gmail.com>:
> >> > 2009/11/16 J. Miguel Marin <jmmarin en est-econ.uc3m.es>:
> >> >> Bueno,
> >> >>
> >> >> obviamente, la solución inmediata es poner attach(dataframe)
> >> >>
> >> >> es decir,
> >> >>
> >> >> freq <- function(x,cosa){
> >> >> attach(cosa)
> >> >> list(data.frame(table(cut(x, breaks=nclass.Sturges(x)))))
> >> >> }
> >>
> >> despues de usar freq(y, cosa)
> >> una vez, una copia de cosa esta en la lista de busqueda (tipea
> >> search() para verlo)
> >>
> >> despues de llamar freq(y2, cosa, dos copias de cosa ... tipea serch()
> >> para ver!
> >> despues de usarlo la tercera vez, etc .......
> >>
> >> Como un mínimo la función tenía que ser definida como esto:
> >>
> >> >> freq <- function(x,cosa){
> >> >> attach(cosa)
> >> >> ans <- list(data.frame(table(cut(x, breaks=nclass.Sturges(x)))))
> >>     detach(cosa)
> >>     ans
> >> >> }
> >>
> >> Pero: Lo mejor es olvidarse de attach() y usar with()
> >>
> >> Kjetil
> >>
> >>
> >> >>
> >> >
> >> > Lo último que hacer es enseñar a futuros usuarios de usar attach(),
> >> pertenece
> >> > a la parte arqueológico de R!
> >> > Tienes que usar with():
> >> > with(cosa, lo_que_quiere_hacer_con_cosa)
> >> > por ejemplo:
> >> > en lugar de definir la funcion freq (que en realidad es una versión
de
> >> with()):
> >> > with(cosa, table(x))
> >> > o
> >> > with(cosa,data.frame(table(cut(x,breaks=nclass.Sturges(x)))))
> >> >
> >> > with() necesita más propaganda!!!
> >> >
> >> > Para la pregunta original, talves:
> >> > library(Hmisc)  # paquete muy extenso de Frank Harrel
> >> > ?describe
> >> > example(describe)
> >> >
> >> > Kjetil
> >> >
> >> >
> >> >> Pero estaría mejor no tener que poner el segundo argumento en la
> función
> >> si
> >> >> eso fuera posible...
> >> >> Y mejor aún: incluir un submenú en RCommander.
> >> >>
> >> >>
> >> >>
> >> >>>
> >> >>> Hola,
> >> >>>
> >> >>> me gustaría hacer una función que fuera bastante automática (para
> >> >>> docencia)
> >> >>> y que hiciera tablas de frecuencias.
> >> >>>
> >> >>> La primera idea que funciona es ésta
> >> >>>
> >> >>> freq <- function(x){
> >> >>> list(data.frame(table(cut(x, breaks=nclass.Sturges(x)))))
> >> >>> }
> >> >>>
> >> >>> Sin embarg,o hay que poner (en general) en x algo así como
> >> >>> el_dataframe$x
> >> >>> para que funcione y la gente se lía si les dices que lo pongan así.
> >> >>>
> >> >>> Si escribo la función como
> >> >>>
> >> >>> freq <- function(x,dataframe){
> >> >>> list(data.frame(table(cut(dataframe$x,
> >> >>> breaks=nclass.Sturges(dataframe$x)))))
> >> >>> }
> >> >>>
> >> >>> NO funciona con una tabla de datos dada.
> >> >>>
> >> >>> Por otro lado, también estaría bien que si se hace un ls() de
> objetos,
> >> >>> detectase
> >> >>> aquél que fuese un data frame y lo tomase por defecto. Pero no sé
> cómo
> >> >>> hacerlo.
> >> >>>
> >> >>> Todo ello para hacer una función automática un poco para la gente
> que
> >> no
> >> >>> se aclara
> >> >>> demasiado con RCommnader
> >> >>>
> >> >>> Finalmente ¿esto se podría programar en RCommander de manera
> asequible?
> >> Me
> >> >>> temo que no viene incluída ninguna función para hacer las típicas
> >> tablas de
> >> >>> frecuencias para variables cuantitativas...
> >> >>>
> >> >>> Un saludo
> >> >>>
> >> >>>
> >> >>> jm~
> >> >>>
> >> >>> _______________________________
> >> >>>
> >> >>>       J. Miguel Marin
> >> >>>
> >> >>> http://www.est.uc3m.es/jmmarin
> >> >>>
> >> >>>   Dep. of Statistics
> >> >>> University Carlos III of Madrid
> >> >>>       Spain (E.U.)
> >> >>>
> >> >>> _______________________________________________
> >> >>> R-help-es mailing list
> >> >>> R-help-es en r-project.org
> >> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >> >>>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> jm~
> >> >>
> >> >> _______________________________
> >> >>
> >> >>       J. Miguel Marin
> >> >>
> >> >> http://www.est.uc3m.es/jmmarin
> >> >>
> >> >>   Dep. of Statistics
> >> >> University Carlos III of Madrid
> >> >>       Spain (E.U.)
> >>  >>
> >> >> _______________________________________________
> >> >> R-help-es mailing list
> >> >> R-help-es en r-project.org
> >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >> >>
> >> >
> >> >
> >> >
> >> > --
> >> > "... an entire human genome would fit on a music CD."
> >> >
> >> > --- www.thinkgene.com
> >> >
> >>
> >>
> >>
> >> --
> >> "... an entire human genome would fit on a music CD."
> >>
> >> --- www.thinkgene.com
> >>
> >> _______________________________________________
> >> R-help-es mailing list
> >> R-help-es en r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>
> >
> >
> >
> > --
> > Ing. Agr. M.Sc.Teresa Boca
> > Instituto de Clima y Agua INTA Castelar.
> > Las Cabañas y Los Reseros s/n°
> > 1712 Castelar Pcia de Buenos Aires, Argentina
> > Cel: 01115-3572-9584
> > Tel: (54-11)-4621-0125/1684
> > Fax:(54-11)-4621-5663
> > tboca en cnia.inta.gov.ar
> >
> > [[alternative HTML version deleted]]
> >
> >
>
>
>
>
> jm~
>
> _______________________________
>
>        J. Miguel Marin
>
> http://www.est.uc3m.es/jmmarin
>
>    Dep. of Statistics
> University Carlos III of Madrid
>        Spain (E.U.)
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



--
"... an entire human genome would fit on a music CD."

--- www.thinkgene.com

[[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



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