3  Primeros pasos en R

Iniciar el trabajo en R y RStudio puede resultar desafiante para quienes no están familiarizados con estos entornos, pero una orientación adecuada facilita considerablemente el proceso. Esta sección guía al usuario en los aspectos fundamentales para comenzar a programar en R, desde la creación de scripts hasta la comprensión de los objetos básicos del lenguaje. Estos conocimientos iniciales son esenciales para establecer un flujo de trabajo eficiente y reproducible (Xie et al., 2018).

3.1 Creación de scripts en RStudio

El script es el archivo principal donde se escribe, guarda y ejecuta el código en R. Utilizar scripts no solo permite desarrollar análisis de datos, sino también documentar cada paso del proceso, lo que contribuye a la reproducibilidad y la organización del trabajo (Xie et al., 2018). Para crear un script en RStudio, se pueden seguir los siguientes métodos:

  1. Desde la barra de menú, seleccionar File > New File > R Script.

  2. Utilizar el atajo de teclado Ctrl + Shift + N para abrir un nuevo script de manera rápida.

Una vez creado, el script se convierte en el espacio central para el desarrollo de los análisis. Es recomendable guardar el archivo desde el inicio, utilizando File > Save o el atajo Ctrl + S, para evitar la pérdida de información y facilitar la gestión de versiones (Xie et al., 2018).

3.2 Guardado y organización de archivos

Una gestión adecuada de los archivos es esencial para mantener la eficiencia y la reproducibilidad en el trabajo con R y RStudio. El uso de nombres descriptivos, la organización en carpetas y la documentación clara de los scripts contribuyen a un entorno de trabajo ordenado y profesional (Xie et al., 2018).

3.2.1 Guardado de scripts y archivos

Para guardar un script en RStudio, se deben seguir estos pasos:

  1. Seleccionar la opción File > Save As… en la barra de menú.

  2. Definir la ubicación y el nombre del archivo en la ventana emergente.

  3. Utilizar nombres que reflejen el contenido y propósito del archivo, por ejemplo: analisis_rendimiento.R para scripts o datos_suelo_2023.csv para archivos de datos.

  4. Evitar espacios y caracteres especiales en los nombres, empleando guiones bajos (_) o guiones medios (-) para separar palabras.

  5. Incluir fechas en formato estándar (YYYY-MM-DD) para facilitar la identificación de versiones, como en 2023-10-15_importacion_datos.R.

Estas prácticas previenen errores en la ejecución del código y facilitan la gestión de versiones y actualizaciones (Xie et al., 2018).

3.2.2 Organización de directorios y proyectos

La estructura de carpetas es clave para mantener el orden en los proyectos. Para organizar los archivos de manera eficiente, se recomienda:

  1. Crear una carpeta específica para cada proyecto, agrupando en ella todos los scripts, datos y resultados relacionados.

  2. Utilizar archivos de proyecto .Rproj, ya que RStudio configura automáticamente el directorio de trabajo al abrir el proyecto, simplificando la gestión de archivos y reduciendo errores asociados a rutas incorrectas (R Core Team, 2023).

3.2.3 Buenas prácticas para la organización de archivos

Para optimizar la organización y facilitar la colaboración, se aconseja:

  1. Estandarizar los nombres de archivos, siguiendo un formato uniforme y descriptivo.

  2. Documentar los pasos del análisis mediante comentarios claros en los scripts, lo que ayuda a comprender y reproducir el trabajo en el futuro.

  3. Utilizar proyectos de RStudio (.Rproj) para asegurar que el entorno de trabajo esté correctamente configurado y todos los archivos relevantes se encuentren en la misma ubicación.

  4. Realizar copias de seguridad periódicas, ya sea mediante sistemas de control de versiones como Git o almacenando archivos importantes en ubicaciones seguras.

La aplicación de estas prácticas contribuye a un flujo de trabajo más eficiente, facilita la colaboración y asegura la reproducibilidad de los análisis realizados en RStudio (Xie et al., 2018; R Core Team, 2023).

3.3 Introducción a los objetos en R

En R, la manipulación y el análisis de datos se basan en el uso de objetos, que son entidades capaces de almacenar información de diversos tipos. Cada objeto tiene un nombre, un tipo de dato y, en algunos casos, dimensiones o atributos adicionales. Esta estructura flexible permite organizar y gestionar datos de manera eficiente, lo que convierte a los objetos en el elemento central del trabajo en R (R Core Team, 2023).

3.3.1 Creación de objetos en R

Para crear un objeto en R, se utiliza un operador de asignación. Aunque existen dos opciones (= y <-), la convención más extendida y recomendada es el uso de <-, ya que mejora la legibilidad y sigue las normas del lenguaje (Ihaka & Gentleman, 1996). El valor o expresión a la derecha del operador se asigna al nombre del objeto a la izquierda.

# Asignación de un valor numérico a un objeto
x <- 10  # El objeto x almacena el valor 10

# Asignación de un texto a un objeto
nombre <- "Ana"  # El objeto nombre almacena la cadena de texto "Ana"

Este método facilita la organización y claridad del código, permitiendo reutilizar y modificar los valores almacenados en los objetos según las necesidades del análisis.

3.3.2 Buenas prácticas y documentación

La claridad en el código es fundamental para la reproducibilidad y el mantenimiento de los análisis. En R, los comentarios se introducen utilizando el símbolo numeral #. Los comentarios no son ejecutados por el intérprete y sirven para explicar el propósito de cada línea o bloque de código, facilitando la comprensión tanto para el autor como para otros usuarios. Por ejemplo:

# Este es un comentario que explica la siguiente línea
y <- 5  # Asigna el valor 5 al objeto y

Se recomienda documentar los scripts de manera clara y consistente, describiendo los pasos principales y las decisiones tomadas durante el análisis. Esta práctica es esencial para la colaboración y para la revisión futura del trabajo (Ihaka & Gentleman, 1996).

3.4 Tipos principales de objetos en R

R permite trabajar con diferentes tipos de objetos, cada uno diseñado para almacenar y manipular distintos tipos de datos. Los más comunes son los siguientes (R Core Team, 2023):

3.4.1 Objetos Numéricos

Los objetos numéricos son fundamentales en R y pueden almacenar tanto números enteros como decimales (también llamados de punto flotante). Existen dos subtipos principales:

  1. Números enteros (integer): Almacenan valores sin decimales

  2. Números de punto flotante (double): Almacenan valores con decimales

Ejemplo de creación de objetos numéricos:

# Creación de objetos numéricos
edad <- 21        # Número entero
altura_m <- 1.70  # Número decimal (punto flotante)
peso_lb <- 145    # Número entero

# Exploración de objetos numéricos
class(edad)      # Muestra "numeric"
[1] "numeric"
typeof(altura_m)  # Muestra "double"
[1] "double"
str(peso_lb)     # Muestra la estructura completa
 num 145
# Operaciones matemáticas básicas
imc <- peso_lb/2.2046/(altura_m^2)  # Cálculo del IMC
print(imc)  # Muestra el resultado del cálculo
[1] 22.75833

Los objetos numéricos permiten realizar operaciones matemáticas y son esenciales en análisis estadísticos, cálculos y modelado de datos.

3.4.2 Objetos tipo Caracter

Los objetos de texto, también conocidos como objetos de tipo carácter, almacenan cadenas de texto. Estos se escriben entre comillas dobles (") o simples ('). Son útiles para representar información cualitativa, como nombres, descripciones o etiquetas.

Ejemplo de creación de objetos de texto:

# Creación de objetos de texto
nombre <- "Juan"           # Usando comillas dobles
apellido <- 'García'       # Usando comillas simples
nombre_completo <- paste(nombre, apellido)  # Concatenación de textos

# Exploración de objetos de texto
class(nombre)          # Muestra "character"
[1] "character"
str(nombre_completo)   # Muestra la estructura
 chr "Juan García"
nchar(nombre)          # Muestra el número de caracteres
[1] 4
# Manipulación de texto
nombre_mayusculas <- toupper(nombre)  # Convierte a mayúsculas
print(nombre_mayusculas)
[1] "JUAN"

3.4.3 Objetos de Tipo Factor

Los objetos de tipo factor se utilizan para almacenar variables categóricas con niveles definidos. Estos niveles representan categorías discretas, como escalas, estados o clasificaciones. Los factores son especialmente útiles en análisis estadísticos, ya que permiten manejar variables categóricas de manera eficiente y asegurar que los análisis se realicen de manera correcta, especialmente en modelos estadísticos y gráficos.

A continuación, se presentan ejemplos de creación y exploración de objetos de tipo factor:

# Creación de factores simples
estado_civil <- factor("soltero")
sexo <- factor("masculino")

En este ejemplo, se crean dos factores simples: estado_civil y sexo. La función factor() convierte las cadenas de texto “soltero” y “masculino” en objetos de tipo factor.

# Creación de factores con múltiples niveles
estado_civil <- factor("soltero", 
                      levels = c("soltero", "casado", "divorciado"))
nivel_educativo <- factor("licenciatura",
                         levels = c("bachillerato",
                                    "licenciatura",
                                    "posgrado"),
                         ordered = TRUE)  # Factor ordenado

En este caso, se crean factores con múltiples niveles. El argumento levels especifica los posibles valores que puede tomar el factor. En el caso de estado_civil, se definen tres niveles: “soltero”, “casado” y “divorciado”. En el caso de nivel_educativo, se definen tres niveles: “bachillerato”, “licenciatura” y “posgrado”. Además, se especifica que el factor es ordenado (ordered = TRUE), lo que indica que los niveles tienen un orden jerárquico.

# Exploración de factores
class(estado_civil)  # Muestra "factor"
[1] "factor"

La función class() devuelve el tipo de objeto, que en este caso es “factor”.

levels(estado_civil) # Muestra los niveles definidos
[1] "soltero"    "casado"     "divorciado"

La función levels() muestra los niveles definidos para el factor estado_civil.

str(nivel_educativo) # Muestra la estructura completa
 Ord.factor w/ 3 levels "bachillerato"<..: 2

La función str() muestra la estructura completa del factor nivel_educativo, incluyendo el tipo de objeto (factor ordenado) y los niveles definidos.

is.ordered(nivel_educativo) # Verifica si el factor es ordenado
[1] TRUE

La función is.ordered() verifica si el factor nivel_educativo es ordenado, devolviendo TRUE en este caso.

Los factores son especialmente útiles en análisis estadísticos porque:

  1. Permiten especificar un orden en las categorías, lo que es importante para variables ordinales como el nivel educativo.

  2. Facilitan la creación de gráficos categóricos, ya que R reconoce automáticamente los factores y los representa de manera adecuada.

  3. Son esenciales en modelos estadísticos, ya que R utiliza los factores para crear variables dummy o indicadoras, que son necesarias para incluir variables categóricas en los modelos.

3.4.4 Objetos Lógicos

Los objetos lógicos almacenan valores TRUE o FALSE, que resultan de comparaciones lógicas. Estos objetos son esenciales para realizar análisis condicionales, aplicar filtros y evaluaciones condicionales.

Ejemplo de creación de objetos lógicos:

# Creación de objetos lógicos mediante comparaciones
mayoria_de_edad <- edad >= 18


# Exploración de objetos lógicos
class(mayoria_de_edad)   # Muestra "logical"
[1] "logical"
str(mayoria_de_edad)      # Muestra la estructura
 logi TRUE

Los objetos lógicos son esenciales para:

  1. Filtrar datos basados en condiciones.

  2. Realizar evaluaciones condicionales.

  3. Crear subconjuntos de datos.

  4. Programación de control de flujo (if/else).

3.5 Funciones para la exploración de objetos

Una vez creados los objetos, es importante poder identificar su naturaleza y estructura. R ofrece varias funciones para este propósito:

  1. class(): Devuelve la clase del objeto, como “numeric”, “character”, “factor” o “logical”.

  2. typeof(): Indica el tipo interno de almacenamiento del objeto, como “double”, “integer” o “character”.

  3. str(): Muestra la estructura interna del objeto, proporcionando un resumen compacto de su contenido.

  4. levels(): Específica para factores, devuelve los niveles o categorías posibles del objeto.

Ejemplo de uso de estas funciones:

# Exploración de un objeto numérico
class(x)      # Devuelve "numeric"
typeof(x)     # Devuelve "double"
str(x)        # Muestra la estructura del objeto

# Exploración de un objeto de texto
class(nombre) # Devuelve "character"
str(nombre)   # Muestra la estructura del objeto

# Exploración de un factor
estado_civil <- factor("soltero", levels = c("soltero",
                                             "casado",
                                             "divorciado"))
class(estado_civil)   # Devuelve "factor"
typeof(estado_civil)  # Devuelve "integer"
str(estado_civil)     # Muestra la estructura del factor
levels(estado_civil)  # Devuelve los niveles posibles