Más notas acerca de R

Cómo quiero usar R

Me gusta el desarrollo basado en pruebas en R, desarrollo basado en README y coincido con que usar Rmarkdown incentiva malos hábitos.

Comparto la opinión de que “el análisis de datos es un grafo acíclico dirigido (DAG)”, “su calidad consiste en ser correcto y reproducible” y conviene tener una organización lógica para realizarlo.

Trucos para R

Cambiar los NA por otra cosa:

# https://stackoverflow.com/questions/8161836/how-do-i-replace-na-values-with-zeros-in-an-r-dataframe
mutate_all(funs(replace(., is.na(.), 0))))

Para medir el tiempo de ejecución:

ptm <- proc.time()
# Código
proc.time() - ptm

Guardar datos:

write.table(
	intra$V2,
	file = "results/Kdb_controls_p1.intra.pvalues",
	quote = FALSE,
	col.names = FALSE,
	row.names = FALSE
)

Ver el tamaño de un objeto en memoria:

object.size(x)

# http://tolstoy.newcastle.edu.au/R/e6/help/09/01/1121.html
# mostrar los objetos en memoria
sort(sapply(ls(), function(x){ object.size(get(x)) }))

Bibliotecas y otras cosas de la sesión:

sessionInfo()

Colapsar datos utilizando alguna función:

Reduce("|", opts)

Usar el operador pipe %>% para hacer más sencillo leer el código:

# docs at https://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html
install.packages("magrittr")
library("magrittr")

A partir de R 4.0 se puede usar |> para componer funciones sin importar bibliotecas adicionales.

Obtener el último valor calculado:

.Last.value

Ayuda multi-línea en R argparse:

parser <- ArgumentParser(
  description=docstring,
  formatter_class= 'argparse.RawTextHelpFormatter'
)
args <- parser$parse_args()

Re-usar listas de variables

Cómo pasar lista de variables para transformaciones.

Consejos para hacer los ejemplos reproducibles

Los ejemplos reproducibles son piezas de código mínimas que siempre obtienen el mismo resultado y muestran el comportamiento esperado.

Sirven para diagnosticar problemas o mostrar uso de código.

Guía para hacer ejemplos reproducibles.

Cómo generar paquetes de R

Generar bibliotecas de R

Para generar bibliotecas en R:

devtools::create("pkgname")

Usar biblioteca local

Supuestamente se puede usar una biblioteca tuya con load_all (docs load_all):

devtools::load_all()

Descargar documento.

Si hago una o varias bibliotecas para tener funciones accesibles desde diferentes scripts, necesito entonces cargar la biblioteca.

Para eso hay varias opciones:

redimensionar gráficas divididas

Cambiar el tamaño de cada marco en un facet.

Gestionar tiempo en R

La gente suele usar lubridate, pero hay una alternativa que busca evitar errores en comportamiento por defectoclock.

Recursos para programar eficientemente en R

R Inferno.

Tutorial de programación eficiente en R

Recursos que no he leído pero suenan interesantes

Trucos para gestionar la memoria en R.

A veces R no guarda mi historial.

«The Tidyverse Cookbook»—Garrett Grolemund: Visualize Data

«Introduction to R - tidyverse»—Brendan R. E. Ansell: Making beautiful plots

Recursos