ecoinfAEET / Notas_Ecosistemas

Notas ecoinformáticas para la revista Ecosistemas
9 stars 15 forks source link

Creacion de funciones #26

Closed farcego closed 4 years ago

farcego commented 6 years ago

Antes de hacer una nota sobre la creacion de paquetes, mejor hacer una sobre creacion de funciones: explicar que es muy facil (encerrar codigo dentro de dos llaves y nombrar a la funcion, grosso modo), es muy util (repetibilidad en el codigo, mucho menos error/bug prone), explicacion de exqueletos de roxygen. Da ventaja a la nota sobre paquetes porque explicaria lo basico de repetibilidad + hacer funciones (el 99% de hacer un paquete) ylos archivos de ayuda, y dejaria la nota de paquetes centrarse en la estructura de archivos y carpetas (lo complicado) que se requieren para hacer el paquete. Ademas, es un paso natural... de escribir codigo, se pasa a hacer funciones, y despues a hacer paquetes .

Yo podria hacerlo/coordinarlo una vez finalizado el de los graficos. Tengo ejemplos aptos para ecologos: 1) empaquetar una linea de codigo en una funcion (para normalizar una variable, y de paso, comparar con la de R base, no se si sabeis, pero hay muchsima gente que no conce la funcion scale de R y crea su funcion propia o sus lineas de codigo en sus scripts) 2) añadir automaticamente a un histograma una barra en la que se muestra el numero de NA's de los datos. Aqui se introduciria el esqueleto de ayuda de roxygen. Ademas, ejemplo de personalizacion de graficos. 3) Algo mas elaborado, para aplicar a data.frames. La que tengo de momento no podria publicarse, podria hacer una funcion para usar un algoritmo/funcion para estimar densidad de topillos que un colega desarrollo en su tesis en la tierra de campos.

Saludos Fer

ibartomeus commented 6 years ago

Me parece estupendo empezar por crear funciones antes de entrar en paquetes. Si te parece añado el tag "help wanted" a ver si alguien se anima a colaborar.

farcego commented 6 years ago

Muchas gracias!. A ver si alguien mas se anima. He detectado un problemilla en la "pildora" que ando haciendo para nuestro lab retreat, ya que roxygen no esta tan bien integrado en RStudio como en otros IDEs (emacs-ess). En emacs, es muy sencillo visualizar la ayuda escrita en roxygen en formato html, al mas clasico estilo R, mientras que en RStudio, al menos de momento, no soporta esa funcionalidad directamente (o al menos yo no la he encontrado). Seguro que algun usuario de RStudio puede echar un cable :) Saludos Fer

ibartomeus commented 6 years ago

En RStudio si das a "document" te creara los .md de la ayuda en la carpeta man. Los .md los puedes visualizar tan facilmente como los html's.

farcego commented 5 years ago

ordenando y trabajando en el issue de dataviz he encontrado la carpeta donde tengo unos tips sobre crear funciones. Con dummy example y un "ejemplo real". Lo lanzo aqui a la vez que lance el de dataviz

marcelinodelacruz commented 5 years ago

Hola compañeros: no sé si es demasiado tarde pero me gustaría colaborar con la nota de creación de funciones.

ibartomeus commented 5 years ago

Yo creo que tu ayuda nos viene genial. @farcego esta acabando otra nota (verdad, Fernando? ;) y quizas tu puedas liderar esta? Lo hablais entre vosotros. Gracias!

marcelinodelacruz commented 5 years ago

OK, a ver qué dice Fernando. Yo puedo ir redactando un borrador mientras tanto.

marcelinodelacruz commented 5 years ago

Hola: no he recibido respuesta de Fer, así que acabo de hacer un pull request con un borrador. Si se quiere apuntar alguien y sugerir alguna cosa importante que me haya dejado, es fácil.

ibartomeus commented 5 years ago

Mil Gracias, y siento el parón veraniego. Ahora mismo lo envio a la lista para hacer revisión grupal.

algarsal commented 5 years ago

Algunos detalles:

L122. queda patente

L133-135. La función que has escrito no me funciona. Para que me funcione he tenido que sustituir max(X) por max(x$X)

Me ha resultado muy interesante la parte de los métodos S3.

Saludos Alfonso

algarsal commented 5 years ago

Las líneas corresponden al docx.

EGarciaBerthou commented 5 years ago

Muy interesante y didáctica la nota. Mejor cambia "Orlóci" en lugar de "Orl’oci" en L. 75 y 176. Saludos, Emili

EGarciaBerthou commented 5 years ago

También cambia "distancia euclídea" en lugar de "distancia ecuclídea" (L. 75 y 87).

iremendoza commented 5 years ago

Hola! En la línea 162, debería poner {r, , eval = FALSE}

Si no, da un error cuando se hace knitr

iremendoza commented 5 years ago

{r, eval = FALSE} quería decir

marcelinodelacruz commented 5 years ago

Hola! En la línea 162, debería poner {r, , eval = FALSE} Si no, da un error cuando se hace knitr

Gracias, Irene. El error ocurre por que, como había detectado Alfonso, en el código del método print debería poner max(x$X) en vez de max(X)

marcelinodelacruz commented 5 years ago

También cambia "distancia euclídea" en lugar de "distancia ecuclídea" (L. 75 y 87).

Gracias, Emili.

ibartomeus commented 5 years ago

Marcelino, estupendo trabajo. He hecho comentarios menores directamente en el texto. Preguntame si alguno no queda claro. Con esto puedes aplicar las correcciones menores que ha sugerido la gente y enviar directamente la nota en .doxc a ecosistemas (type = nota ecoinformatica) para publicar en el siguiente número. Muchas gracias.

marcelinodelacruz commented 5 years ago

Gracias a ti, Nacho y a todos los revisores. Me pongo con ello.

marcelinodelacruz commented 5 years ago

Nacho, respecto al comentario de la línea 91, (" Quizas es mejor usar MARGIN=2, para evitar perder a gente con t()"), en este caso es necesario dejarlo así ya que hay que normalizar por filas y el resultado, lógicamente, es una matriz transpuesta. Se me ocurre añadir la siguiente aclaración: "(Nota: la función t() en el segundo paso la empleamos para devolver la matiz transpuesta resultante a su configuración original)"

ibartomeus commented 5 years ago

Claro, dije lo de MARGIN de memoria. Aclararlo ayuda a la gente que nunca ha usado t(). Graicas!

ibartomeus commented 4 years ago

Marcelino, has podido enviar la nota? Confirmame y cierro el issue. Gracias!

marcelinodelacruz commented 4 years ago

Hola Nacho: Sí, ya está enviada. Gracias a ti!