Skip to content

Commit

Permalink
markdown source builds
Browse files Browse the repository at this point in the history
Auto-generated via {sandpaper}
Source  : 0e4ee12
Branch  : main
Author  : Nelly Sélem <[email protected]>
Time    : 2023-11-07 12:53:02 +0000
Message : Merge pull request swcarpentry#153 from swcarpentry/update/packages

Update 21 packages
  • Loading branch information
actions-user committed Nov 10, 2023
1 parent 8400b94 commit 9aa74d8
Show file tree
Hide file tree
Showing 82 changed files with 15,298 additions and 0 deletions.
779 changes: 779 additions & 0 deletions 01-rstudio-intro.md

Large diffs are not rendered by default.

275 changes: 275 additions & 0 deletions 02-project-intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,275 @@
---
title: Gestión de proyectos con RStudio
teaching: 20
exercises: 10
source: Rmd
---

::::::::::::::::::::::::::::::::::::::: objectives

- Crear proyectos independientes en RStudio

::::::::::::::::::::::::::::::::::::::::::::::::::

:::::::::::::::::::::::::::::::::::::::: questions

- ¿Cómo puedo gestionar mis proyectos en R?

::::::::::::::::::::::::::::::::::::::::::::::::::



## Introducción

El proceso científico es naturalmente incremental, y la vida de muchos proyectos comienza como notas aleatorias, algún código, luego un manuscrito, y
eventualmente todo está mezclado.

<blockquote class="twitter-tweet"><p>Managing your projects in a reproducible fashion doesn't just make your science reproducible, it makes your life easier.</p>— Vince Buffalo (@vsbuffalo) <a href="https://twitter.com/vsbuffalo/status/323638476153167872">April 15, 2013</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

La mayoría de la gente tiende a organizar sus proyectos de esta manera:

![](fig/bad_layout.png)

Hay muchas razones de por qué debemos **siempre** evitar esto:

1. Es realmente difícil saber cuál versión de tus datos es
la original y cuál es la modificada.
2. Es muy complicado porque se mezclan archivos con varias
extensiones juntas.
3. Probablemente te lleve mucho tiempo encontrar realmente
cosas, y relacionar las figuras correctas con el código exacto
que ha sido utilizado para generarlas.

Un buen diseño del proyecto finalmente hará tu vida más fácil:

- Ayudará a garantizar la integridad de tus datos.
- Hace que sea más simple compartir tu código con alguien más
(un compañero de laboratorio, colaborador o supervisor).
- Permite cargar fácilmente tu código junto con el envío de tu manuscrito.
- Hace que sea más fácil retomar un proyecto después de un descanso.

## Una posible solución

Afortunadamente hay herramientas y paquetes que pueden ayudarte a gestionar tu trabajo con efectividad.

Uno de los aspectos más poderosos y útiles de RStudio es su funcionalidad de gestión de proyectos. Lo utilizaremos hoy para crear un proyecto autocontenido y reproducible.

::::::::::::::::::::::::::::::::::::::: challenge

## Desafío: Creando un proyecto autocontenido

Vamos a crear un proyecto en RStudio:

1. Hacer clic en el menú "File", luego en "New Project".
2. Hacer clic en "New Directory".
3. Hacer clic en "Empty Project".
4. Introducir el nombre del directorio para guardar tu proyecto, por ejemplo: "my\_project".
5. Si está disponible, seleccionar la casilla de verificación "Create a git repository."
6. Hacer clic en el botón "Create Project".


::::::::::::::::::::::::::::::::::::::::::::::::::

Ahora cuando inicies R en este directorio de proyectos, o abras este proyecto con RStudio, todo nuestro trabajo estará completamente autocontenido en este directorio.

## Buenas prácticas para la organización del proyecto

Aunque no existe una "mejor" forma de diseñar un proyecto, existen algunos principios
generales que deben cumplirse para facilitar su gestión:

### Tratar los datos como de sólo lectura

Este es probablemente el objetivo más importante al configurar un proyecto. Los datos
suelen consumir mucho tiempo y/o ser costosos de recolectar. Trabajar con ellos en un formato en el que pueden ser modificados (por ejemplo, en Excel) significa que nunca estás seguro de donde provienen, o cómo han sido modificados desde su recolección.
Por lo tanto, es una buena idea manejar tus datos como de "sólo lectura".

### Limpieza de datos

En muchos casos tus datos estarán "sucios" y necesitarán un preprocesamiento significativo
para obtener un formato R (o cualquier otro lenguaje de programación) que te resulte útil. Esta
tarea es algunas veces llamada **"data munging"**. Es útil almacenar estos **scripts** en una carpeta separada y crear una segunda carpeta de datos de "sólo lectura" para contener los **datasets** "limpios".

### Tratar la salida generada como disponible

Todo lo generado por tus **scripts** debe tratarse como descartable: todo debería
poder regenerarse a partir de tus **scripts**.

Hay muchas diferentes maneras de gestionar esta salida. Es útil
tener una carpeta de salida con diferentes subdirectorios para cada análisis
por separado. Esto hace que sea más fácil después, ya que muchos de nuestros análisis son exploratorios
y no terminan siendo utilizados en el proyecto final, y algunos de los análisis se comparten entre proyectos.

::::::::::::::::::::::::::::::::::::::::: callout

## Tip: Good Enough Practices for Scientific Computing

[Good Enough Practices for Scientific Computing](https://github.com/swcarpentry/good-enough-practices-in-scientific-computing/blob/gh-pages/good-enough-practices-for-scientific-computing.pdf) brinda las siguientes recomendaciones para la organización de proyectos:

1. Coloque cada proyecto en su propio directorio, el cual lleva el nombre del proyecto.
2. Coloque documentos de texto asociados con proyecto en el directorio `doc`.
3. Coloque los datos sin procesar y los metadatos en el directorio `data`, y archivos generados durante la limpieza y análisis en el directorio `results` .
4. Coloque los **scripts** fuente del proyecto y los programas en el directorio `src`, y programas traídos de otra parte o compilados localmente en el directorio `bin`.
5. Nombre todos archivos de tal manera que reflejen su contenido o función.

::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::: callout

## Tip: ProjectTemplate - una posible solución

Una manera de automatizar la gestión de un proyecto es instalar el paquete `ProjectTemplate`.
Este paquete configurará una estructura de directorios ideal para la gestión de proyectos.
Esto es muy útil ya que te permite tener tu **pipeline/workflow** de análisis organizado y estructurado.
Junto con la funcionalidad predeterminada del proyecto RStudio y Git, podrás realizar el seguimiento de tu
trabajo y compartirlo con colaboradores.

1. Instala `ProjectTemplate`.
2. Carga la librería.
3. Inicializa el proyecto:


```r
install.packages("ProjectTemplate")
library("ProjectTemplate")
create.project("../my_project", merge.strategy = "allow.non.conflict")
```

Para más información de ProjectTemplate y su functionalidad visita la
página [ProjectTemplate](https://projecttemplate.net/index.html).


::::::::::::::::::::::::::::::::::::::::::::::::::

### Separar la definición de funciones y la aplicación

Una de las maneras más efectivas de trabajar con R es comenzar escribiendo el código que deseas que se ejecute directamente en un **script** .R, y enseguida ejecutar las líneas seleccionadas (ya sea utilizando los atajos del teclado en RStudio o haciendo clic en el botón "Run") en la consola interactiva de R.

Cuando tu proyecto se encuentra en sus primeras etapas, el archivo **script** inicial .R generalmente contendrá muchas líneas de código ejecutadas directamente. Conforme vaya madurando, fragmentos reutilizables podrán ser llevados a sus
propias funciones. Es buena idea separar estas funciones en dos carpetas separadas; una
para guardar funciones útiles que reutilizarás a través del análisis y proyectos, y
una para guardar los **scripts** de análisis.

::::::::::::::::::::::::::::::::::::::::: callout

## Tip: Evitando la duplicación

Puedes encontrarte utilizando datos o **scripts** de análisis a través de varios proyectos.
Normalmente, deseas evitar la duplicación para ahorrar espacio y evitar
actualizar el código en múltiples lugares.

En este caso, es útil hacer "links simbólicos", los cuales son esencialmente
accesos directos a archivos en otro lugar en un sistema de archivos. En Linux y OS X puedes
utilizar el comando `ln -s`, y en Windows crear un acceso directo o
utilizar el comando `mklink` desde la terminal de Windows.


::::::::::::::::::::::::::::::::::::::::::::::::::

### Guardar los datos en el directorio de datos

Ahora que tenemos una buena estructura de directorios colocaremos/guardaremos los archivos de datos en el directorio `data/`.

::::::::::::::::::::::::::::::::::::::: challenge

## Desafío 1

Descargar los datos gapminder de [aquí](https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv).

1. Descargar el archivo (CTRL + S, clic botón derecho del ratón -> "Guardar como...", o Archivo -> "Guardar página como...")
2. Asegúrate de que esté guardado con el nombre `gapminder-FiveYearData.csv`
3. Guardar el archivo en la carpeta `data/` dentro de tu proyecto.

Más delante cargaremos e inspeccionaremos estos datos.


::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::: challenge

## Desafío 2

Es útil tener una idea general sobre el **dataset**, directamente desde la
línea de comandos, antes de cargarlo en R. Comprender mejor el **dataset**
será útil al tomar decisiones sobre cómo cargarlo en R. Utiliza la terminal de
línea de comandos para contestar las siguientes preguntas:

1. ¿Cuál es el tamaño del archivo?
2. ¿Cuántas líneas de datos contiene?
3. ¿Cuáles tipos de valores están almacenados en este archivo?

::::::::::::::: solution

## Solución al desafío 2

Al ejecutar estos comandos en la terminal:


```sh
ls -lh data/gapminder-FiveYearData.csv
```

```{.output}
-rw-r--r-- 1 runner docker 80K Nov 10 17:55 data/gapminder-FiveYearData.csv
```

El tamaño del archivo es 80K.


```sh
wc -l data/gapminder-FiveYearData.csv
```

```{.output}
1705 data/gapminder-FiveYearData.csv
```

Hay 1705 líneas. Los datos se ven así:


```sh
head data/gapminder-FiveYearData.csv
```

```{.output}
country,year,pop,continent,lifeExp,gdpPercap
Afghanistan,1952,8425333,Asia,28.801,779.4453145
Afghanistan,1957,9240934,Asia,30.332,820.8530296
Afghanistan,1962,10267083,Asia,31.997,853.10071
Afghanistan,1967,11537966,Asia,34.02,836.1971382
Afghanistan,1972,13079460,Asia,36.088,739.9811058
Afghanistan,1977,14880372,Asia,38.438,786.11336
Afghanistan,1982,12881816,Asia,39.854,978.0114388
Afghanistan,1987,13867957,Asia,40.822,852.3959448
Afghanistan,1992,16317921,Asia,41.674,649.3413952
```

:::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::: callout

## Tip: Línea de comandos en R Studio

Puedes abrir rápidamente una terminal en RStudio usando la opción del menú **Tools -> Shell...**.


::::::::::::::::::::::::::::::::::::::::::::::::::

### Control de versiones

Es importante llevar a cabo el control de versiones en un proyecto. Ve [aquí](https://swcarpentry.github.io/git-novice-es/14-supplemental-rstudio/) para una buena lección donde se describe el uso de Git con R Studio.



:::::::::::::::::::::::::::::::::::::::: keypoints

- Usar RStudio para crear y gestionar proyectos con un diseño consistente.
- Tratar los datos brutos como de sólo lectura.
- Tratar la salida generada como disponible.
- Definición y aplicación de funciones separadas.

::::::::::::::::::::::::::::::::::::::::::::::::::


Loading

0 comments on commit 9aa74d8

Please sign in to comment.