Skip to content

Commit ce82f9f

Browse files
committed
source commit: a0dcb70
0 parents  commit ce82f9f

File tree

82 files changed

+16988
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+16988
-0
lines changed

01-rstudio-intro.md

Lines changed: 779 additions & 0 deletions
Large diffs are not rendered by default.

02-project-intro.md

Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
---
2+
title: Gestión de proyectos con RStudio
3+
teaching: 20
4+
exercises: 10
5+
source: Rmd
6+
---
7+
8+
::::::::::::::::::::::::::::::::::::::: objectives
9+
10+
- Crear proyectos independientes en RStudio
11+
12+
::::::::::::::::::::::::::::::::::::::::::::::::::
13+
14+
:::::::::::::::::::::::::::::::::::::::: questions
15+
16+
- ¿Cómo puedo gestionar mis proyectos en R?
17+
18+
::::::::::::::::::::::::::::::::::::::::::::::::::
19+
20+
21+
22+
## Introducción
23+
24+
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
25+
eventualmente todo está mezclado.
26+
27+
<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>
28+
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
29+
30+
La mayoría de la gente tiende a organizar sus proyectos de esta manera:
31+
32+
![](fig/bad_layout.png)
33+
34+
Hay muchas razones de por qué debemos **siempre** evitar esto:
35+
36+
1. Es realmente difícil saber cuál versión de tus datos es
37+
la original y cuál es la modificada.
38+
2. Es muy complicado porque se mezclan archivos con varias
39+
extensiones juntas.
40+
3. Probablemente te lleve mucho tiempo encontrar realmente
41+
cosas, y relacionar las figuras correctas con el código exacto
42+
que ha sido utilizado para generarlas.
43+
44+
Un buen diseño del proyecto finalmente hará tu vida más fácil:
45+
46+
- Ayudará a garantizar la integridad de tus datos.
47+
- Hace que sea más simple compartir tu código con alguien más
48+
(un compañero de laboratorio, colaborador o supervisor).
49+
- Permite cargar fácilmente tu código junto con el envío de tu manuscrito.
50+
- Hace que sea más fácil retomar un proyecto después de un descanso.
51+
52+
## Una posible solución
53+
54+
Afortunadamente hay herramientas y paquetes que pueden ayudarte a gestionar tu trabajo con efectividad.
55+
56+
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.
57+
58+
::::::::::::::::::::::::::::::::::::::: challenge
59+
60+
## Desafío: Creando un proyecto autocontenido
61+
62+
Vamos a crear un proyecto en RStudio:
63+
64+
1. Hacer clic en el menú "File", luego en "New Project".
65+
2. Hacer clic en "New Directory".
66+
3. Hacer clic en "Empty Project".
67+
4. Introducir el nombre del directorio para guardar tu proyecto, por ejemplo: "my\_project".
68+
5. Si está disponible, seleccionar la casilla de verificación "Create a git repository."
69+
6. Hacer clic en el botón "Create Project".
70+
71+
72+
::::::::::::::::::::::::::::::::::::::::::::::::::
73+
74+
Ahora cuando inicies R en este directorio de proyectos, o abras este proyecto con RStudio, todo nuestro trabajo estará completamente autocontenido en este directorio.
75+
76+
## Buenas prácticas para la organización del proyecto
77+
78+
Aunque no existe una "mejor" forma de diseñar un proyecto, existen algunos principios
79+
generales que deben cumplirse para facilitar su gestión:
80+
81+
### Tratar los datos como de sólo lectura
82+
83+
Este es probablemente el objetivo más importante al configurar un proyecto. Los datos
84+
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.
85+
Por lo tanto, es una buena idea manejar tus datos como de "sólo lectura".
86+
87+
### Limpieza de datos
88+
89+
En muchos casos tus datos estarán "sucios" y necesitarán un preprocesamiento significativo
90+
para obtener un formato R (o cualquier otro lenguaje de programación) que te resulte útil. Esta
91+
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".
92+
93+
### Tratar la salida generada como descartable
94+
95+
Todo lo generado por tus **scripts** debe tratarse como descartable: todo debería
96+
poder regenerarse a partir de tus **scripts**.
97+
98+
Hay muchas diferentes maneras de gestionar esta salida. Es útil
99+
tener una carpeta de salida con diferentes subdirectorios para cada análisis
100+
por separado. Esto hace que sea más fácil después, ya que muchos de nuestros análisis son exploratorios
101+
y no terminan siendo utilizados en el proyecto final, y algunos de los análisis se comparten entre proyectos.
102+
103+
::::::::::::::::::::::::::::::::::::::::: callout
104+
105+
## Tip: Good Enough Practices for Scientific Computing
106+
107+
[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:
108+
109+
1. Coloque cada proyecto en su propio directorio, el cual lleva el nombre del proyecto.
110+
2. Coloque documentos de texto asociados con proyecto en el directorio `doc`.
111+
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` .
112+
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`.
113+
5. Nombre todos archivos de tal manera que reflejen su contenido o función.
114+
115+
::::::::::::::::::::::::::::::::::::::::::::::::::
116+
117+
::::::::::::::::::::::::::::::::::::::::: callout
118+
119+
## Tip: ProjectTemplate - una posible solución
120+
121+
Una manera de automatizar la gestión de un proyecto es instalar el paquete `ProjectTemplate`.
122+
Este paquete configurará una estructura de directorios ideal para la gestión de proyectos.
123+
Esto es muy útil ya que te permite tener tu **pipeline/workflow** de análisis organizado y estructurado.
124+
Junto con la funcionalidad predeterminada del proyecto RStudio y Git, podrás realizar el seguimiento de tu
125+
trabajo y compartirlo con colaboradores.
126+
127+
1. Instala `ProjectTemplate`.
128+
2. Carga la librería.
129+
3. Inicializa el proyecto:
130+
131+
132+
``` r
133+
install.packages("ProjectTemplate")
134+
library("ProjectTemplate")
135+
create.project("../my_project", merge.strategy = "allow.non.conflict")
136+
```
137+
138+
Para más información de ProjectTemplate y su functionalidad visita la
139+
página [ProjectTemplate](https://projecttemplate.net/index.html).
140+
141+
142+
::::::::::::::::::::::::::::::::::::::::::::::::::
143+
144+
### Separar la definición de funciones y la aplicación
145+
146+
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.
147+
148+
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
149+
propias funciones. Es buena idea separar estas funciones en dos carpetas separadas; una
150+
para guardar funciones útiles que reutilizarás a través del análisis y proyectos, y
151+
una para guardar los **scripts** de análisis.
152+
153+
::::::::::::::::::::::::::::::::::::::::: callout
154+
155+
## Tip: Evitando la duplicación
156+
157+
Puedes encontrarte utilizando datos o **scripts** de análisis a través de varios proyectos.
158+
Normalmente, deseas evitar la duplicación para ahorrar espacio y evitar
159+
actualizar el código en múltiples lugares.
160+
161+
En este caso, es útil hacer "links simbólicos", los cuales son esencialmente
162+
accesos directos a archivos en otro lugar en un sistema de archivos. En Linux y OS X puedes
163+
utilizar el comando `ln -s`, y en Windows crear un acceso directo o
164+
utilizar el comando `mklink` desde la terminal de Windows.
165+
166+
167+
::::::::::::::::::::::::::::::::::::::::::::::::::
168+
169+
### Guardar los datos en el directorio de datos
170+
171+
Ahora que tenemos una buena estructura de directorios colocaremos/guardaremos los archivos de datos en el directorio `data/`.
172+
173+
::::::::::::::::::::::::::::::::::::::: challenge
174+
175+
## Desafío 1
176+
177+
Descargar los datos gapminder de [aquí](https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv).
178+
179+
1. Descargar el archivo (CTRL + S, clic botón derecho del ratón -> "Guardar como...", o Archivo -> "Guardar página como...")
180+
2. Asegúrate de que esté guardado con el nombre `gapminder-FiveYearData.csv`
181+
3. Guardar el archivo en la carpeta `data/` dentro de tu proyecto.
182+
183+
Más delante cargaremos e inspeccionaremos estos datos.
184+
185+
186+
::::::::::::::::::::::::::::::::::::::::::::::::::
187+
188+
::::::::::::::::::::::::::::::::::::::: challenge
189+
190+
## Desafío 2
191+
192+
Es útil tener una idea general sobre el **dataset**, directamente desde la
193+
línea de comandos, antes de cargarlo en R. Comprender mejor el **dataset**
194+
será útil al tomar decisiones sobre cómo cargarlo en R. Utiliza la terminal de
195+
línea de comandos para contestar las siguientes preguntas:
196+
197+
1. ¿Cuál es el tamaño del archivo?
198+
2. ¿Cuántas líneas de datos contiene?
199+
3. ¿Cuáles tipos de valores están almacenados en este archivo?
200+
201+
::::::::::::::: solution
202+
203+
## Solución al desafío 2
204+
205+
Al ejecutar estos comandos en la terminal:
206+
207+
208+
``` sh
209+
ls -lh data/gapminder-FiveYearData.csv
210+
```
211+
212+
``` output
213+
-rw-r--r-- 1 runner runner 80K Nov 11 00:47 data/gapminder-FiveYearData.csv
214+
```
215+
216+
El tamaño del archivo es 80K.
217+
218+
219+
``` sh
220+
wc -l data/gapminder-FiveYearData.csv
221+
```
222+
223+
``` output
224+
1705 data/gapminder-FiveYearData.csv
225+
```
226+
227+
Hay 1705 líneas. Los datos se ven así:
228+
229+
230+
``` sh
231+
head data/gapminder-FiveYearData.csv
232+
```
233+
234+
``` output
235+
country,year,pop,continent,lifeExp,gdpPercap
236+
Afghanistan,1952,8425333,Asia,28.801,779.4453145
237+
Afghanistan,1957,9240934,Asia,30.332,820.8530296
238+
Afghanistan,1962,10267083,Asia,31.997,853.10071
239+
Afghanistan,1967,11537966,Asia,34.02,836.1971382
240+
Afghanistan,1972,13079460,Asia,36.088,739.9811058
241+
Afghanistan,1977,14880372,Asia,38.438,786.11336
242+
Afghanistan,1982,12881816,Asia,39.854,978.0114388
243+
Afghanistan,1987,13867957,Asia,40.822,852.3959448
244+
Afghanistan,1992,16317921,Asia,41.674,649.3413952
245+
```
246+
247+
:::::::::::::::::::::::::
248+
249+
::::::::::::::::::::::::::::::::::::::::::::::::::
250+
251+
::::::::::::::::::::::::::::::::::::::::: callout
252+
253+
## Tip: Línea de comandos en R Studio
254+
255+
Puedes abrir rápidamente una terminal en RStudio usando la opción del menú **Tools -> Shell...**.
256+
257+
258+
::::::::::::::::::::::::::::::::::::::::::::::::::
259+
260+
### Control de versiones
261+
262+
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.
263+
264+
265+
266+
:::::::::::::::::::::::::::::::::::::::: keypoints
267+
268+
- Usar RStudio para crear y gestionar proyectos con un diseño consistente.
269+
- Tratar los datos brutos como de sólo lectura.
270+
- Tratar la salida generada como disponible.
271+
- Definición y aplicación de funciones separadas.
272+
273+
::::::::::::::::::::::::::::::::::::::::::::::::::
274+
275+

0 commit comments

Comments
 (0)