[R-es] Funcion para una tabla de frecuencias
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 ---------------------------------------------------------------------------- ---- _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es