[R-es] Funcion para una tabla de frecuencias

Kjetil Halvorsen kjetil1001 en gmail.com
Lun Nov 16 20:25:08 CET 2009


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



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