scieee Science in your language
[es] (orig)

Quince consejos para mejorar nuestro código y flujo de trabajo con R

Read accessible full text

Quince consejos para mejorar nuestro código y flujo de trabajo con R

Author: Rodríguez Sánchez, Francisco
Publisher: Asociación Española de Ecología Terrestre
Year: 2020
DOI: 10.7818/ECOS.2129
Source: https://idus.us.es/bitstreams/95acff37-45d1-48e1-b39d-c25f4725dc6d/download
1
© 2020. El au o . Edi ado po la AEET. [Ecosis emas no se hace esponsable del uso indebido de ma e ial suje o a de echo de au o ]
La mayo ía de los ecólogos que esc ibimos código in o má ico pa a desa olla nues os análisis somos au odidac as (He nandez
e al. 2012). Nunca hemos ecibido o mación sob e buenas p ác icas de p og amación (Wilson e al. 2014, 2017; Rod íguez-Sánchez
e al. 2016). En consecuencia, nues o código es a menudo ine icien e, deso denado, p openso a e o es, di ícil de e isa y eu iliza .
En es a no a se ecogen 15 ecomendaciones pa a mejo a nues o lujo de abajo y p og amación pa icula men e en lenguaje R (R
Co e Team 2020) (aunque muchas de es as buenas p ác icas sean igualmen e aplicables a o os lenguajes). R se ha con e ido en la
he amien a es adís ica y lenguaje de p og amación más popula en ecología (Lai e al. 2019). Es as ecomendaciones p e enden e i a
e o es ecuen es y mejo a la calidad del código desa ollado en nues os análisis.
1. U iliza un sis ema de con ol de e siones
En luga de gua da dis in as e siones de nues o código como sc ip _ 1, sc ip _ 2, e c., es muy ecomendable u iliza
he amien as como gi (h ps://gi -scm.com) que pe mi en ene un a chi o pe ec amen e o ganizado de odos los cambios ealizados
en da os y código. gi egis a minuciosamen e quién hizo qué, cuándo y po qué, y pe mi e compa a y ecupe a e siones an e io es.
Cuando además se combina con pla a o mas como Gi Hub, Gi Lab o Bi bucke , se acili a eno memen e el desa ollo colabo a i o de
p oyec os (Blischak e al. 2016).
2. U iliza una es uc u a es ánda de p oyec o
Idealmen e, odos los a chi os elacionados con un p oyec o (da os, código, igu as, e c.) deben aloja se en la misma ca pe a
(Fig.1; Wilson e al. 2017; Coope y Hsing 2017), po ejemplo ap o echando la in aes uc u a de p oyec os de RS udio. U iliza el
paque e he e (Mülle 2020a) o p oj oo (Mülle 2020b) pa a especi ica las u as a los di e en es a chi os den o del p oyec o.
3. Añade un iche o README al di ec o io aíz de u p oyec o
Añade un iche o README al di ec o io aíz de u p oyec o que si a como p esen ación del mismo (Wilson e al. 2017): obje i os y
elemen os del p oyec o, desa ollado es, licencia de uso, cómo ci a lo, e c.
4. U iliza un sc ip maes o (‘make ile’)
En p oyec os ela i amen e complejos, donde se manejan a ios conjun os de da os o sc ip s de código, es muy ecomendable ene
un sc ip maes o que se enca gue de ejecu a odas las piezas en el o den co ec o. Pod ía se algo an sencillo como es e make ile.R:
sou ce(“clean_da a.R”)
sou ce(“ i _model.R”)
sou ce(“gene a e_ epo .R”)
Paque es como d ake (Landau 2018) o a ge s (Landau 2020) pe mi en un con ol mucho más po en e del lujo de abajo,
ejecu ando solo aquello que necesi a ac ualización, pe mi iendo pa aleliza , e c.
5. E i a gua da el espacio de abajo (‘wo kspace’)
En gene al, es p e e ible no gua da el espacio de abajo (wo kspace, iche o .RDa a) al inaliza cada sesión de abajo, pa a e i a
la acumulación de obje os innecesa ios en memo ia. En su luga , debemos gua da siemp e el código uen e y gua da opcionalmen e
aquellos obje os (p. ej. usando sa eRDS) que equie en compu ación la ga o cos osa (B yan y Hes e 2019).
(1) Depa amen o de Biología Vege al y Ecología, Uni e sidad de Se illa, A da. Reina Me cedes s/n, 41012 Se illa, España.
*Au o de co espondencia: F. Rod íguez-Sánchez [[email p o ec ed]]
> Recibido el 23 de diciemb e de 2020 - Acep ado el 23 de diciemb e de 2020
Rod íguez-Sánchez, F. 2020. Quince consejos pa a mejo a nues o código y lujo de abajo con R. Ecosis emas 29(3): 2129.
h ps://doi.o g/10.7818/ECOS.2129
Quince consejos pa a mejo a nues o código y lujo de abajo con R
F. Rod íguez-Sánchez1,*
aee
ASOCIACIÓN ESPAÑOLA
DE ECOLOGÍA TERRESTRE
Ecosis emas 29(3):2129 [Sep iemb e-Diciemb e 2020]
h ps://doi.o g/10.7818/ECOS.2129
EcoNOTA
ecosis emas
REVISTA CIENTÍFICA DE ECOLOGÍA Y MEDIO AMBIENTE
ISSN 1697-2473
Open access / CC BY-NC 3.0
disponible en www. e is aecosis emas.ne
6. Ap o echa las en ajas de Rma kdown
Rma kdown (h ps:// ma kdown. s udio.com) pe mi e in eg a ex o y código (no solo de R) y gene a documen os dinámicos
(incluyendo ablas, igu as, e c) que ep oducen odo el p oceso de análisis. Así, Rma kdown acili a la colabo ación y comunicación de
esul ados, y educe d ás icamen e el núme o de e o es (Coope y Hsing 2017).
7. Ap o echa las he amien as que ayudan a esc ibi mejo código
Paque es como e ile (Be in y Baume 2020), que nos a isa sob e posibles p oblemas en nues o código y o mas de
soluciona los, o Rclean (Lau 2020), que nos de uel e el código mínimo empleado pa a p oduci cualquie esul ado, son muy ú iles pa a
esc ibi mejo código o mejo a código ya exis en e.
8. Comen a u código
U iliza los comen a ios pa a guia al lec o , dis ingui subsecciones, o explica po qué se hacen las cosas de una de e minada mane a.
9. U iliza nomb es memo ables pa a los obje os
U iliza nomb es con signi icado que esuman el con enido o unción del obje o (p. ej. modelo_adi i o, modelo_in e ac i o en
luga de m1, m2); e h ps://s yle. idy e se.o g/syn ax.h ml.
10. Documen a los da os
P epa a me ada os explicando qué ep esen a cada a iable ( ipo de medida, unidades), au o es, licencia de uso… He amien as
como da aspice (Boe ige e al. 2020) acili an eno memen e es a a ea, y mejo an la isibilidad y po encial de eu ilización de los da os.
11. Comp ueba los da os an es del análisis
En cualquie p oyec o puede ocu i que los da os de pa ida con engan e o es (in oducidos al eclea los da os, impo a los o
manipula los). Paque es como asse (Fische i 2020), alida e ( an de Loo y de Jonge 2019) o poin blank (Iannone y Va gas
2020) esul an muy ú iles pa a comp oba la calidad de los da os an es del análisis.
Po ejemplo, el siguien e código:
lib a y(“asse ”)
da ase %>%
asse (wi hin_bounds(0, 0.20), ui .weigh ) %>%
asse (in_se (“ ojo”,“neg o”), colou )
comp ueba que la a iable ui .weigh con enga alo es numé icos en e 0 y 0.20, y que la a iable colou con enga solo dos
alo es (“ ojo” y “neg o”). Si es as condiciones no se cumplen, asse nos a isa á.
12. Comp ueba los esul ados del análisis
Al igual que comp obamos los da os o iginales, podemos comp oba que los esul ados del análisis en an den o de lo espe ado.
Po ejemplo, si el esul ado debe es a comp endido en e 0 y 1:
ou pu %>%
asse (wi hin_bounds(0, 1), esul )
Tales comp obaciones son muy ú iles pa a de ec a posibles e o es en nues o código, cambios inespe ados en paque es, e c.
13. Esc ibe código modula
Los sc ip s de código la gos y deso ganizados son más di íciles de e isa y, po an o, más p ocli es a con ene e o es. Es
con enien e esc ibi código modula ; po ejemplo, pa iendo un sc ip la go en a ios pequeños, o esc ibiendo unciones con un come ido
especí ico e independien es del código p incipal del análisis.
14. E i a epe iciones en el código
A menudo necesi amos ejecu a unas líneas de código epe idamen e. Po ejemplo, pa a p oduci una igu a con dis in as especies:
da ase %>%
il e (species == “Lau us nobilis”)%>%
ggplo () +
geom_poin (aes(x, y))
da ase %>%
il e (species == “Lau us azo ica”)%>%
ggplo () +
geom_poin (aes(x, y))
2
Rod íguez-Sánchez2020
Ecosis emas 29(3):2129
¿Cómo podemos e i a epe i nos? Una opción pod ía se esc ibi un bucle ( o loop) con i e aciones pa a cada especie:
species <- c(“Lau us nobilis”,“Lau us azo ica”)
o (i in species) {
da ase %>%
il e (species == i) %>%
ggplo () +
geom_poin (aes(x, y))
}
Aún mejo , pod íamos esc ibi una unción que p oduzca la g á ica pa a una especie dada:
plo _species <- unc ion(sp, da a) {
da a %>%
il e (species == sp) %>%
ggplo () +
geom_poin (aes(x, y))
}
Y después ejecu a esa unción pa a odas las especies. Po ejemplo, usando lapply:
lapply(species, plo _species, da a = da ase )
o pu (Hen y y Wickham 2020):
pu ::map(species, plo _species, da a = da ase )
15. Regis a las dependencias
Todo análisis depende de un conjun o de paque es que con iene documen a de mane a consis en e e in e p e able. Ello nos pe mi e,
po ejemplo, ejecu a ácilmen e el análisis en o o o denado , o ec ea el en o no compu acional as una ac ualización.
Exis en muchas opciones pa a documen a las dependencias de nues o análisis, desde la unción sessionIn o, paque es como
au omagic (B okamp 2019) o en (Ushey 2020) que egis an odos los paque es u ilizados (y sus e siones), a paque es como
con aine i que acili an la c eación de un ‘docke ile’ pa a ec ea el en o no compu acional en cualquie compu ado a (Nüs e al.
2020).
Muchas de es as medidas son áciles de implemen a y no equie en g andes cambios en la o ganización del abajo ni el es ilo de
p og amación; no obs an e pueden con ibui a mejo a no ablemen e la calidad del código desa ollado pa a nues os análisis,
edundando po an o en bene icios an o pa a el p og amado como sus colabo ado es y e iso es.
3
Rod íguez-Sánchez2020
Ecosis emas 29(3):2129
Figu a 1. Ejemplo de es uc u a de p oyec o. Exis e un iche o README (no malmen e en o ma o ma kdown) con in o mación gene al del p oyec o ( e-
comendación nº 3), un iche o especi icando la licencia de uso de los da os y/o código, un iche o egis ando las dependencias ( ecomendación nº 15),
un sc ip maes o o ‘make ile’ que ejecu a los dis in os pasos del análisis en el o den co ec o ( ecomendación nº 4), una ca pe a de da os sepa ando
da os b u os y p ocesados, y una ca pe a de análisis que con iene el código pa a gene a las igu as inales y documen os Rma kdown ( ecomendación
nº 6) con los dis in os pasos del análisis ( ecomendación nº 13).
Ag adecimien os
Al In eg a i e Ecology G oup, po inci a a la esc i u a de es a no a, y al g upo de Ecoin o má ica de la AEET (en pa icula a An onio
Pé ez-Luque, Ru h Delgado, Hugo Saiz, Al onso Ga mendia, Ai o Amez egui, Da id Ga cía-Callejas e Ignasi Ba omeus), po sus
suge encias pa a mejo a la.
Re e encias
Be in, A.M., Baume , B.S. 2020. C ea ing op imal condi ions o ep oducible da a analysis in R wi h ‘ e ile’. S a . h ps://doi.o g/10.1002/s a4.332
Blischak, J.D., Da enpo , E.R., Wilson, G. 2016. A Quick In oduc ion o Ve sion Con ol wi h Gi and Gi Hub. PLOS Compu a ional Biology 12: e1004668.
Boe ige , C., Chambe lain, S., Fou nie , A., Hondula, K., K ys alli, A., Mecum, B., e al. 2020. da aspice: C ea e Ligh weigh Schema.o g Desc ip ions o
Da a.h ps://CRAN.R-p ojec .o g/package=da aspice
B okamp, C. 2019. au omagic: Au omagically Documen and Ins all Packages Necessa y o Run R Code. h ps://CRAN.R-p ojec .o g/package=au omagic
B yan, J., Hes e , J. 2019. Wha They Fo go o Teach You Abou R. h ps:// s a s.w
Coope , N.H., Hsing, P.-Y. eds. 2017. A guide o ep oducible code in ecology and e olu ion. B i ish Ecological Socie y, Lond es, Reino Unido.
Fische i, T. 2020. asse : Asse i e P og amming o R Analysis Pipelines. h ps://CRAN.R-p ojec .o g/package=asse
Hen y, L., Wickham, H. 2020. pu : Func ional P og amming Tools.h ps://CRAN.R-p ojec .o g/package=pu
He nandez, R.R., Maye nik, M.S., Mu phy-Ma iscal, M.L., Allen, M.F. 2012. Ad anced Technologies and Da a Managemen P ac ices in En i onmen al
Science: Lessons om Academia. BioScience 62: 1067-1076.
Iannone, R., Va gas, M. 2020. poin blank: Valida ion o Local and Remo e Da a Tables. h ps://CRAN.R-p ojec .o g/package=poin blank
Lai, J., Lo ie, C.J., Muenchen, R.A., Yang, J., Ma, K. 2019. E alua ing he popula i y o R in ecology. Ecosphe e 10: e02567.
Landau, W.M. 2020. a ge s: Dynamic Func ion-O ien ed ’Make’-Like Decla a i e Wo k lows. h ps://wlandau.gi hub.io/ a ge s/
Landau, W.M. 2018. The d ake R package: a pipeline oolki o ep oducibili y and high-pe o mance compu ing. Jou nal o Open Sou ce So wa e
3(21):550.
Lau, M. 2020. Rclean: A Tool o W i ing Cleane , Mo e T anspa en Code. h ps://gi hub.com/MKLau/Rclean
Mülle , K. 2020a. he e: A Simple Way o Find You Files. h ps://CRAN.R-p ojec .o g/package=he e
Mülle , K. 2020b. p oj oo : Finding Files in P ojec Subdi ec o ies. h ps://CRAN.R-p ojec .o g/package= p oj oo
Nüs , D., Socha , V., Ma wick, B., Eglen, S.J., Head, T., Hi s , T., E ans, B.D. 2020. Ten simple ules o w i ing Docke iles o ep oducible da a science.
PLOS Compu a ional Biology 16: e1008316.
R Co e Team. 2020. R: A Language and En i onmen o S a is ical Compu ing. R Founda ion o S a is ical Compu ing, Vienna, Aus ia.
Rod íguez-Sánchez, F., Pé ez-Luque, A.J., Ba omeus, I., Va ela, S. 2016. Ciencia ep oducible: qué, po qué, cómo? Ecosis emas 25: 83-92.
Ushey, K. 2020. en : P ojec En i onmen s. h ps://CRAN.R-p ojec .o g/package= en
an de Loo, M., de Jonge, E. 2019 (en p ensa). Da a Valida ion In as uc u e o R. Jou nal o S a is ical So wa e.
Wilson, G., A uliah, D.A., B own, C.T., Hong, N.P.C., Da is, M., Guy, R.T., e al. 2014. Bes P ac ices o Scien i ic Compu ing. PLoS Biology 12: e1001745.
Wilson, G., B yan, J., C ans on, K., Ki zes, J., Nede b ag , L., Teal, T.K. 2017. Good enough p ac ices in scien i ic compu ing. PLOS Compu a ional Biology
13: e1005510.
4
Rod íguez-Sánchez2020
Ecosis emas 29(3):2129
ECOSISTEMAS es una e is a edi ada po : con la colabo ación de: