1. Fundamentos del Lenguaje R

1.1 Introducción a R

El lenguaje de programación R es un lenguaje de programación y un entorno de software especializado en el análisis estadístico y la visualización de datos. Es ampliamente utilizado en áreas como la estadística, la bioinformática, la economía, la ingeniería, y la química, debido a su capacidad para manejar grandes volúmenes de datos, realizar análisis complejos y generar gráficos de alta calidad.

Características principales de R:

Lenguaje de programación orientado a estadísticas: R fue diseñado originalmente para el análisis de datos y estadísticas, lo que lo hace ideal para trabajos que requieren cálculos estadísticos complejos, como regresión, análisis multivariado, análisis de series temporales, y más.

Extensa librería de paquetes: R tiene una vasta colección de paquetes desarrollados por la comunidad que permiten realizar tareas específicas en diversas disciplinas, desde análisis de datos hasta simulaciones y visualización de complejas estructuras químicas.

Visualización avanzada: R proporciona herramientas poderosas para crear gráficos y representaciones visuales de datos, lo cual es crucial en muchas aplicaciones científicas, incluyendo la química.

Código abierto y gratuito: R es de código abierto, lo que significa que cualquier persona puede acceder, modificar y distribuir el software sin costo alguno. Esto ha fomentado una comunidad activa que contribuye con paquetes y funciones útiles.

Importancia de R en la química:

Análisis de datos experimentales:

En la química, se generan grandes cantidades de datos experimentales, como resultados de análisis espectroscópicos, cromatográficos, o termodinámicos. R facilita la limpieza, manipulación, y análisis de estos datos, permitiendo a los químicos realizar cálculos precisos y obtener conclusiones válidas a partir de los resultados experimentales. Por ejemplo, el análisis de datos de espectroscopía (como espectros UV-Vis, FTIR, NMR) se puede hacer mediante herramientas estadísticas y gráficas en R. Modelización y simulación:

R permite modelar fenómenos químicos, como reacciones químicas, mecanismos de transferencia de masa, o procesos termodinámicos. Se pueden utilizar simulaciones para predecir el comportamiento de sistemas químicos en condiciones variadas.

También es útil para crear modelos estadísticos que describen relaciones entre variables químicas, como la correlación entre concentración y absorbancia, o la relación entre presión y volumen de un gas (leyes de los gases).

Optimización de procesos químicos:

En la industria química, se utilizan algoritmos de optimización para mejorar la eficiencia de los procesos. R ofrece varias funciones y paquetes que ayudan a encontrar las mejores condiciones de operación en sistemas complejos, como la optimización de la dosificación de reactivos en una reacción química o la optimización de condiciones de reacción para maximizar el rendimiento.

Química computacional y bioinformática:

R se utiliza en la química computacional para realizar análisis de estructuras moleculares, predicción de propiedades químicas y estudios de simulación molecular. Además, es muy utilizado en bioinformática para estudiar interacciones de proteínas, bases de datos genéticas, análisis de secuencias y redes de interacción molecular.

Por ejemplo, el análisis de datos de secuenciación de ADN, proteínas o metabolitos es posible en R mediante la integración con herramientas bioinformáticas.

Visualización de estructuras y moléculas:

R permite representar gráficamente estructuras moleculares complejas. A través de paquetes como ChemmineR o rcdk, se pueden visualizar y analizar moléculas químicas, calcular descriptores moleculares, y realizar análisis estadísticos basados en esos descriptores. Los gráficos de dispersión, diagramas de barras, y representaciones 3D de datos químicos son fácilmente generados en R.

Estudio de propiedades fisicoquímicas:

R también es útil para estudiar propiedades fisicoquímicas de compuestos, como pH, solubilidad, reactividad, entre otras. A través de la regresión y análisis multivariado, se pueden encontrar correlaciones entre distintas propiedades y predecir comportamientos bajo condiciones específicas.

Ejemplos de aplicaciones en la química con R:

Química analítica: Análisis de datos de espectroscopía (UV-Vis, NIR, IR), cromatografía de gases (GC), cromatografía líquida (HPLC), etc.

Química teórica y computacional: Cálculos moleculares, simulaciones, estudios de interacciones moleculares, estudios de dinámica molecular.

Química ambiental: Análisis de contaminantes, simulación de procesos de tratamiento de aguas, modelado de emisiones, etc.

Química farmacéutica: Análisis de actividad biológica de compuestos, farmacocinética, predicción de propiedades de fármacos.

Tipos de variables en R

En R, un lenguaje de programación ampliamente utilizado para el análisis de datos, las variables son fundamentales. Las variables en R se utilizan para almacenar valores de distintos tipos, y cada tipo de variable se comporta de una manera diferente. Conocer los diferentes tipos de variables en R es esencial para trabajar eficazmente con datos.

A continuación te mostraremos los principales tipos de variables en R, sus características y cómo usarlas.

1.1. Números

Los números en R pueden ser enteros o números de punto flotante (decimales).

Números enteros: Son números sin decimales.

Números de punto flotante (decimales): Son números que tienen decimales.

x <- 10         # Entero
y <- 3.14       # Número decimal

1.2. Caracteres (Strings)

Los strings o cadenas de caracteres son secuencias de texto. Se usan para almacenar nombres, descripciones o cualquier tipo de texto. Se delimitan con comillas dobles ” o simples ’.

nombre <- "Juan"
descripcion <- 'Hola, soy un string'

1.3. Lógicos (Booleanos)

Las variables lógicas o booleanas son aquellas que pueden tener solo dos valores: TRUE (verdadero) o FALSE (falso).

TRUE representa una afirmación correcta o verdadera.

FALSE representa una afirmación falsa.

es_mayor <- TRUE
es_noche <- FALSE

1.4 Vectores

Un vector es una colección ordenada de elementos del mismo tipo. Los vectores pueden contener números, cadenas de texto u otros tipos de datos. Es uno de los tipos de datos más comunes en R.

# Vectores
concentraciones <- c(0.1, 0.2, 0.3, 0.4, 0.5)
print(concentraciones)
## [1] 0.1 0.2 0.3 0.4 0.5
elementos <- c("H", "O", "N", "C")
print(elementos)
## [1] "H" "O" "N" "C"

1.5 Matrices

Las matrices son colecciones bidimensionales de elementos del mismo tipo. Se utilizan para almacenar datos en filas y columnas. Son muy útiles cuando se trabaja con álgebra lineal o conjuntos de datos que se representan en forma de tabla.

# Matrices
datos_experimento <- matrix(c(
    1.2, 2.3, 3.4,
    2.1, 3.2, 4.3
), nrow=2, byrow=TRUE)
datos_experimento
##      [,1] [,2] [,3]
## [1,]  1.2  2.3  3.4
## [2,]  2.1  3.2  4.3

1.6 Dataframes

Los data frames son una estructura de datos muy utilizada en R para manejar datos tabulares. A diferencia de las matrices, un data frame puede contener diferentes tipos de datos en cada columna (por ejemplo, números en una columna y texto en otra).

# Data Frames
experimento <- data.frame(
    temperatura = c(25, 30, 35, 40),
    pH = c(7.0, 6.8, 7.2, 7.1),
    rendimiento = c(85, 88, 92, 87)
)
experimento
##   temperatura  pH rendimiento
## 1          25 7.0          85
## 2          30 6.8          88
## 3          35 7.2          92
## 4          40 7.1          87

Operaciones aritméticas

# Operaciones aritméticas

a<- 3+4     #suma
b<- 4*5     #multiplicación
c<- 8/4     #división
e=exp(-4)   #exponeciación
s=log10(100)  #logaritmo base 10
n=log(200)    #Logaritmo natural
p=5^2         #potenciación                                                  

Funciones estadísticas

v=c(5.6,3.7,2.6,4.3,7.4)    #asigna a v un conjunto de datos
m=mean(v)                   #calcula media
s=sd(v)                     #calcula desviación estándar
varianza=var(v)             #calcula la varianza
print(v)
## [1] 5.6 3.7 2.6 4.3 7.4
print(m)
## [1] 4.72
print(s)
## [1] 1.848513
print(varianza)
## [1] 3.417

Ejemplos de aplicación del lenguaje R en Química

1. Análisis de Datos Espectroscópicos (UV-Vis)

En la química analítica, los espectros de absorción UV-Vis son comúnmente utilizados para analizar la concentración de compuestos en una muestra. Los datos espectroscópicos generalmente consisten en longitudes de onda (x) y absorbancia (y), y el análisis de estos datos puede ser realizado en R utilizando herramientas de ajuste y regresión.

Ejemplo: Supongamos que tenemos un conjunto de datos de absorbancia en función de la longitud de onda, y queremos ajustar una curva de calibración para estimar la concentración de una sustancia.

# Cargar librerías necesarias
library(ggplot2)

# Datos de longitud de onda (nm) y absorbancia
longitud_onda <- c(200, 250, 300, 350, 400, 450, 500)
absorbancia <- c(0.1, 0.2, 0.35, 0.5, 0.65, 0.8, 0.9)

# Ajustar una línea de regresión
modelo <- lm(absorbancia ~ longitud_onda)

# Imprimir los resultados del modelo
summary(modelo)
## 
## Call:
## lm(formula = absorbancia ~ longitud_onda)
## 
## Residuals:
##          1          2          3          4          5          6          7 
##  1.786e-02 -2.143e-02 -1.071e-02 -9.454e-17  1.071e-02  2.143e-02 -1.786e-02 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -4.750e-01  2.600e-02  -18.27 9.03e-06 ***
## longitud_onda  2.786e-03  7.143e-05   39.00 2.09e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0189 on 5 degrees of freedom
## Multiple R-squared:  0.9967, Adjusted R-squared:  0.9961 
## F-statistic:  1521 on 1 and 5 DF,  p-value: 2.089e-07
# Visualizar los datos y el ajuste
ggplot(data = data.frame(longitud_onda, absorbancia), aes(x = longitud_onda, y = absorbancia)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  ggtitle("Ajuste de Curva de Calibracion (UV-Vis)") +
  xlab("Longitud de Onda (nm)") +
  ylab("Absorbancia")
## `geom_smooth()` using formula = 'y ~ x'

2. Análisis de Datos de Reacción Química (Cinética de Primer Orden)

En la cinética química, los datos experimentales que muestran la concentración de un reactante en función del tiempo pueden ser ajustados para determinar la constante de velocidad de la reacción. Una reacción de primer orden sigue la ecuación:

\[ [A]_t=[A]_0\exp(-0.05t) \] Ejemplo: En este ejemplo, queremos ajustar los datos de concentración en función del tiempo para determinar la constante de velocidad \(k\) de una reacción de primer orden.

# Datos experimentales: tiempo (minutos) y concentración de A
tiempo <- c(0, 10, 20, 30, 40, 50, 60)
x=seq(0,60,0.1)
y=0.18*exp(-x*0.05)
concentracion <- 0.18*exp(-tiempo*0.05)

plot(tiempo, concentracion, main = "Cinetica de Primer Orden", xlab = "Tiempo (min)", ylab = "[A]")
lines(x,y,col="blue")

# Calcular el logaritmo natural de las concentraciones
log_concentracion <- log(concentracion)

# Ajustar una línea de regresión (modelo de primer orden)
modelo_cinetico <- lm(log_concentracion ~ tiempo)

# Imprimir los resultados del modelo
summary(modelo_cinetico)
## Warning in summary.lm(modelo_cinetico): essentially perfect fit: summary may be
## unreliable
## 
## Call:
## lm(formula = log_concentracion ~ tiempo)
## 
## Residuals:
##          1          2          3          4          5          6          7 
##  4.149e-16  1.552e-17 -4.162e-16 -3.733e-16  3.048e-17  1.567e-16  1.719e-16 
## 
## Coefficients:
##               Estimate Std. Error    t value Pr(>|t|)    
## (Intercept) -1.715e+00  2.239e-16 -7.658e+15   <2e-16 ***
## tiempo      -5.000e-02  6.211e-18 -8.051e+15   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.286e-16 on 5 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 6.481e+31 on 1 and 5 DF,  p-value: < 2.2e-16
# Visualizar los datos y el ajuste
plot(tiempo, log_concentracion, main = "Cinetica de Primer Orden", xlab = "Tiempo (min)", ylab = "ln([A])")
abline(modelo_cinetico, col = "red")