Fundamentos de R y Programación Orientada a Objetos en R

Author

Andres Jimenez, Parrish Grados, Melany Montero, Alexis Medrano, Jose Maquera, James Cumpa

Fundamentos de R y Programación Orientada a Objetos con R & RStudio

Integrantes:

  • Andres del Rosario Jimenez Pacheco

  • Parrish Gabriel Grados Regalado

  • Melany Valeria Montero Tabori

  • Alexis Medrano Rivera

  • Jose Maquera Martinez

  • Jeffrey Jhon James Cumpa Quijua

I. Fundamentos del Programa

a) ¿Qué es R?

R es un entorno de software y un lenguaje de programación destinado al análisis estadístico y la manipulación de datos. Fue desarrollado a principios de la década de 1990 por Ross Ihka y Robert Gentleman en la Universidad de Auckland, Nueva Zelanda. Debido a su poder y flexibilidad, es ampliamente aceptado en el mundo académico y la industria.

R es más adecuado para análisis estadísticos complejos, como el análisis de series de tiempo. Se ofrece una amplia gama de herramientas y métodos para realizar pruebas de hipótesis, análisis de varianza, regresiones lineales y no lineales, entre otras tareas. Además, su sistema de gráficos integrado le permite crear gráficos de barras, líneas, dispersiones y muchos otros tipos de gráficos. R es un software de código abierto, lo que significa que su código fuente es gratuito para usar y modificar y está disponible para todos. Esta característica ayuda an una gran comunidad de usuarios a crecer y desarrollarse continuamente. Mediante la instalación de paquetes y bibliotecas creados por la comunidad, los usuarios pueden agregar funcionalidades adicionales. Estos paquetes incluyen estadísticas avanzadas, aprendizaje automático y visualización.

En cuanto a la manipulación de datos, R proporciona herramientas sólidas para la selección, filtrado y transformación de datos, lo que lo hace ideal para la preparación de datos antes de realizar análisis más avanzados. Además, R es un lenguaje orientado a objetos, lo que significa que los datos se consideran objetos que la programación puede manipular y transformar. Esto hace que los trabajos de datos sean más fáciles y facilita la automatización de tareas.

b) ¿Qué es IDE - RStudio?

Un Entorno de Desarrollo Integrado, conocido como IDE por sus siglas en inglés, es una herramienta esencial para los programadores y científicos de datos. Proporciona un entorno de trabajo que facilita la creación, edición, prueba y depuración de código de programación. Un IDE combina varias características y utilidades en un solo entorno cohesivo, lo que mejora significativamente la eficiencia y la productividad del desarrollo de software.

RStudio es un entorno de desarrollo integrado (IDE) altamente especializado y ampliamente utilizado que se enfoca en el lenguaje de programación R. R es un lenguaje de programación y entorno de análisis de datos ampliamente utilizado en estadísticas y ciencias de datos. RStudio proporciona una interfaz de usuario amigable y una amplia gama de herramientas para facilitar la escritura de código en R, el análisis de datos, la creación de visualizaciones y la implementación de proyectos de análisis de datos y estadísticas. Aquí tienes una definición más profunda de RStudio y su importancia en las finanzas cuantitativas:

RStudio como IDE:

RStudio es un entorno de desarrollo integrado (IDE) diseñado específicamente para R. Ofrece las siguientes características:

  1. Editor de Código: Proporciona un editor de código enriquecido con resaltado de sintaxis, sugerencias de código, auto-completado y facilidad para escribir y editar scripts en R.

  2. Consola de R: Integra una consola de R directamente en el entorno, lo que permite ejecutar comandos de R en tiempo real y ver los resultados de inmediato.

  3. Explorador de Objetos: Permite ver y explorar los objetos en el espacio de trabajo, lo que facilita la manipulación y comprensión de los datos.

  4. Ayuda y Documentación: Proporciona acceso rápido a la documentación de R y paquetes, lo que es esencial para entender las funciones y métodos disponibles.

  5. Historial y Control de Versiones: RStudio guarda el historial de comandos y proyectos, lo que facilita el seguimiento y la reproducción de análisis anteriores.

  6. Visualización Interactiva: Permite crear y visualizar gráficos interactivos directamente en el IDE.

Caracteristicas y Ventajas:

  • Interfaz Intuitiva: RStudio proporciona una interfaz de usuario intuitiva con ventajas y paneles organizados para el scrip de R, la consola, la visualización de variables, el historial y más.

  • Editor de Código: RStudio incluye un potente editor de código que resalta la sintaxis de R, lo que facilita la escritura y depuración de código.

  • Consola Integrada: La consola de R está integrada en Rstudios, lo que permite ejecutar comandos de R en tiempo real y ver los resultados de inmediato.

  • Administrador de Paquetes: RStudio facilita la gestión de paquetes de R. Puedes instalar, cargar y actualizar paquetes con facilidad a través de una interfaz gráfica.

  • Visualizacion de Plots y Gráficos: RStudios proporciona una ventana de visualización de gráficos que muestra los resultados gráficos generados por R.

  • Integracion con R Markdown: RStudio se integra perfectamente con R Markdown, lo que permite la creación de informes reproductibles que combinan código R, resultados y texto explicativo.

  • Integracion de Git y Control de Versiones: RStudio tiene la integración con sistemas de control de versiones como Git. Puedes clonar repositorios, realizar confirmaciones y gestionar tu código directamente desde el IDE.

  • Depuración de Código: RStudio ofrece herramientas avanzadas de depuración, como puntos de ruptura y la capacidad de explorar variables en tiempo de ejecución, lo que facilita la identificación y solución de errores en el código.

  • Soporte para Proyectos: RStudio permite organizar tu trabajo en proyectos. Esto ayuda a mantener los archivos y directorios organizados y permite la reutilización de configuraciones y paquetes.

  • Complementos y Extensiones: RStudio admite la instalación de complementos y extensiones que mejoran la funcionalidad del IDE, lo que permite personalizar tu entorno de trabajo según tus necesidades específicas.

Importancia en las Finanzas Cuantitativas:

La importancia de RStudio en las finanzas cuantitativas radica en su capacidad para permitir a los profesionales en este campo:

  1. Análisis de Datos Financieros: RStudio es una herramienta eficaz para la manipulación y análisis de datos financieros. Facilita la limpieza, exploración y modelado de datos de mercado, lo que es crucial para tomar decisiones informadas.

  2. Modelado y Estimación Estadística: En finanzas cuantitativas, se requiere modelar y estimar los comportamientos financieros y los riesgos. RStudio proporciona una amplia variedad de paquetes estadísticos y de modelado que son esenciales para este propósito.

  3. Visualización de Datos Financieros: La generación de gráficos y visualizaciones de datos financieros es crucial para la presentación y comunicación de resultados. RStudio permite crear visualizaciones personalizadas y efectivas.

  4. Desarrollo de Estrategias Cuantitativas: Los profesionales de finanzas cuantitativas utilizan RStudio para desarrollar, probar y optimizar estrategias de inversión basadas en modelos cuantitativos y algoritmos.

  5. Gestión de Carteras: RStudio es útil para la gestión de carteras de inversión, incluida la diversificación y el cálculo de métricas de rendimiento.

  6. Investigación y Desarrollo Financiero: Para la investigación en finanzas, RStudio facilita la implementación de modelos, simulaciones y análisis estadísticos avanzados.

En resumen, RStudio desempeña un papel esencial en las finanzas cuantitativas al proporcionar un entorno de desarrollo dedicado a R, lo que facilita la escritura de código, el análisis de datos y la toma de decisiones basadas en datos en el sector financiero. Su versatilidad y las numerosas bibliotecas de R disponibles hacen que sea una herramienta poderosa para profesionales y analistas que trabajan en el campo de las finanzas cuantitativas.

c) Definir Programación orientada a objetos

Inicios de la programación orientada a objetos

La programación orientada a objetos comienza en un intentando tener el control en la dificultad de un software. A lo largo de la historia, la estrategia predominante para abordar esta complejidad ha sido la utilización de la programación estructurada. Este enfoque implica desglosar el problema principal en subproblemas y subsubproblemas hasta llegar a acciones extremadamente simples y sencillas de codificar. En esencia, se trata de descomponer el problema en acciones verbales. Este tipo de descomposición se centra en dividir el problema en “objetos”. En lugar de centrarse únicamente en las acciones a realizar en el problema, se observa el escenario real del problema y se busca simular este escenario en el programa.

  • Ejemplo: Imaginemos un programa de gestión de automóviles. En la programación orientada a objetos, dividimos el problema en entidades principales como “Automóvil” y “Conductor”. Cada entidad (clase) tiene atributos como “marca”, “modelo”, “nombre del conductor”, etc. Además, creamos métodos como “arrancarMotor”, “acelerar”, “frenar” para que los objetos (instancias de las clases) realicen acciones específicas. Así, podemos manipular y organizar el comportamiento y los datos de forma más modular y eficiente en nuestro programa. Por ejemplo, la acción de “arrancarMotor” se ejecuta en un objeto de la clase “Automóvil” y representa un verbo clave en la interacción con el software.

Conceptos previos

  • Objeto: Un objeto se define como un conjunto interconectado de datos y funciones en programación. Estos objetos tienen la finalidad de modelar entidades o conceptos del mundo real en el contexto de la programación. En esencia, un objeto encapsula un concepto y contiene todos los datos que describen sus características, así como las operaciones que se pueden ejecutar en esos datos. Es una representación dentro del programa que abstrae un concepto, permitiendo manipularlo de manera efectiva y eficiente.

  • Mensaje: En la mayoría de los casos, un objeto se presenta como una parte integral de un programa o aplicación que incorpora numerosos otros objetos. Es a través de esta interacción que los programadores logran una funcionalidad de nivel superior y la capacidad de modelar comportamientos altamente complejos. La comunicación y la interacción entre los objetos de un programa se realizan mediante el envío y recepción de mensajes. Cuando un objeto A desea que otro objeto B realice alguna de sus funciones internas (métodos de B), el objeto A envía un mensaje al objeto B para iniciar esta acción. El mensaje esta conformado por tres partes (objeto destinatario, método y parámetros) con los que se ejecuta la funcion solicitada al momento de recibir el mensaje

  • Clase: Una clase, en el contexto de la programación orientada a objetos, se puede entender como un modelo o una plantilla que describe las propiedades y comportamientos compartidos por todos los objetos de un tipo específico. Funciona como un plano para crear objetos. En una clase, se definen las características que los objetos de esa clase tendrán, como variables que almacenan datos (también conocidas como atributos o propiedades), y métodos que representan las operaciones que estos objetos pueden realizar.

Por ejemplo, Imaginemos una clase llamada “Persona”. En esta clase, podríamos definir atributos como “nombre”, “edad” y “dirección”, y métodos como “caminar”, “hablar” y “comer”. Cada objeto creado a partir de esta clase representaría una persona única con sus propios valores específicos para estos atributos, y tendría la capacidad de realizar las acciones definidas por los métodos de la clase. Así, una clase en programación orientada a objetos proporciona una estructura y un conjunto de comportamientos comunes para los objetos que se crean a partir de ella, permitiendo una gestión organizada y eficaz de los datos y acciones asociadas a esos objetos.

Definición

La programación orientada a objetos (POO) representa un enfoque en la programación que se fundamenta en la representación de entidades y conceptos del mundo real en forma de “objetos”. Estos objetos son instancias de clases, que son plantillas o prototipos que definen las características y comportamientos comunes para un tipo específico de objeto. Cada objeto encapsula datos (también llamados atributos o propiedades) y comportamientos (también conocidos como métodos o funciones) relacionados.

En POO, se busca modelar el mundo real de una manera más precisa y organizada, reflejando la interacción y relación entre diferentes entidades. Las clases actúan como abstracciones para representar categorías de objetos, y los objetos creados a partir de estas clases heredan sus atributos y comportamientos.

Los cuatro conceptos fundamentales en la programación orientada a objetos son:

  1. Abstracción: Es el proceso de identificar las características esenciales de un objeto y eliminar los detalles irrelevantes. Ayuda a enfocarse en lo que es importante para el contexto del problema.
#Ejemplo
# Definir una función para crear un vehículo
crear_vehiculo <- function(marca, modelo) {
  vehiculo <- list(marca = marca, modelo = modelo)
  return(vehiculo)
}

# Función para obtener información del vehículo
obtener_informacion <- function(vehiculo) {
  return(paste("Vehículo:", vehiculo$marca, vehiculo$modelo))
}

# Crear un vehículo
mi_auto <- crear_vehiculo("Toyota", "Corolla")

# Obtener información del vehículo
print(obtener_informacion(mi_auto))
[1] "Vehículo: Toyota Corolla"
  1. Encapsulación: Es el principio de ocultar el estado interno de un objeto y exigir que toda la interacción se realice a través de una interfaz bien definida. Esto promueve la modularidad y protege la integridad de los datos.
#Ejemplo
# Crear un objeto con datos encapsulados
crear_persona <- function(nombre, edad) {
  persona <- list()
  persona$nombre <- nombre
  persona$edad <- edad

  # Método para obtener el nombre
  persona$get_nombre <- function() {
    return(persona$nombre)
  }

  # Método para obtener la edad
  persona$get_edad <- function() {
    return(persona$edad)
  }

  return(persona)
}

# Crear una persona
mi_persona <- crear_persona("Juan", 30)

# Intentar acceder directamente a los datos (no es posible)
print(mi_persona$nombre)  # Esto generaría un error
[1] "Juan"
# Acceder a los datos utilizando métodos (encapsulación)
cat("Nombre:", mi_persona$get_nombre())
Nombre: Juan
cat("Edad:", mi_persona$get_edad())
Edad: 30
  1. Herencia: Es un principio clave que facilita la creación y organización eficiente de código. Este mecanismo permite que una clase, denominada clase derivada o subclase, herede automáticamente todas las propiedades y comportamientos de otra clase previamente existente, conocida como clase base o superclase. La subclase puede luego extender o modificar estos atributos y métodos heredados, además de introducir sus propias particularidades que la diferencien de la clase base.

    La herencia se presenta como una herramienta fundamental para abordar la resolución de problemas de manera estructurada. Al posibilitar establecer una relación jerárquica entre los conceptos que se están tratando, contribuye a una organización más eficiente y ordenada en el desarrollo de soluciones.

# Clase base Vehiculo
crear_vehiculo <- function(marca, modelo) {
  vehiculo <- list(marca = marca, modelo = modelo)
  
  vehiculo$obtener_informacion <- function() {
    return(paste("Vehículo:", vehiculo$marca, vehiculo$modelo))
  }
  
  return(vehiculo)
}

# Subclase Automovil
crear_automovil <- function(marca, modelo, puertas) {
  automovil <- crear_vehiculo(marca, modelo)
  automovil$puertas <- puertas
  
  automovil$obtener_informacion <- function() {
    return(paste("Automóvil:", automovil$marca, automovil$modelo, ", Puertas:", automovil$puertas))
  }
  
  return(automovil)
}

# Subclase Motocicleta
crear_motocicleta <- function(marca, modelo, tipo_motor) {
  motocicleta <- crear_vehiculo(marca, modelo)
  motocicleta$tipo_motor <- tipo_motor
  
  motocicleta$obtener_informacion <- function() {
    return(paste("Motocicleta:", motocicleta$marca, motocicleta$modelo, ", Tipo de motor:", motocicleta$tipo_motor))
  }
  
  return(motocicleta)
}

# Crear un automóvil
mi_automovil <- crear_automovil("Toyota", "Corolla", 4)
print(mi_automovil$obtener_informacion())
[1] "Automóvil: Toyota Corolla , Puertas: 4"
# Crear una motocicleta
mi_motocicleta <- crear_motocicleta("Honda", "CBR", "Gasolina")
print(mi_motocicleta$obtener_informacion())
[1] "Motocicleta: Honda CBR , Tipo de motor: Gasolina"
  1. Polimorfismo: Es la capacidad de distintos objetos de una jerarquía de clases para ser tratados como un objeto de una clase común superior. Esto proporciona flexibilidad y extensibilidad en el diseño del software.
# Función para calcular el área de un círculo
calcular_area_circulo <- function(radio) {
  return(pi * radio^2)
}

# Función para calcular el área de un cuadrado
calcular_area_cuadrado <- function(lado) {
  return(lado^2)
}
# Calcular el área de un círculo
radio <- 3
area_circulo <- calcular_area_circulo(radio)
print(paste("Área del círculo con radio", radio, "es:", area_circulo))
[1] "Área del círculo con radio 3 es: 28.2743338823081"
# Calcular el área de un cuadrado
lado <- 4
area_cuadrado <- calcular_area_cuadrado(lado)
print(paste("Área del cuadrado con lado", lado, "es:", area_cuadrado))
[1] "Área del cuadrado con lado 4 es: 16"

ll. Manipulación de objetos

a) ¿Qué es la manipulación de objetos?

La manipulación de objetos en R se refiere al proceso de trabajar con estructuras de datos y objetos en el lenguaje de programación R. En R, los objetos pueden ser vectores, matrices, data frames, listas y otros tipos de estructuras de datos que pueden contener información. Manipular objetos implica crear, modificar, transformar y analizar estos objetos para llevar a cabo tareas específicas, como análisis de datos, modelado estadístico y visualización.

En el contexto financiero, la manipulación de objetos en R es esencial para:

  1. Análisis de datos financieros: Utilizar data frames y tablas para almacenar y analizar datos de mercado, informes financieros, tasas de interés y otros indicadores económicos.

  2. Modelado financiero: Crear modelos estadísticos y matemáticos para evaluar el rendimiento de inversiones, proyectar flujos de efectivo, valorar activos y gestionar riesgos.

  3. Construcción de portafolios: Organizar activos financieros en estructuras de datos como listas o data frames para evaluar la diversificación y el rendimiento de una cartera de inversión.

  4. Visualización de datos financieros: Crear gráficos y visualizaciones para representar de manera efectiva los datos financieros, lo que es crucial para la toma de decisiones informadas.

  5. Automatización de tareas financieras: Desarrollar scripts y programas para automatizar tareas como la actualización de bases de datos de precios de acciones, el cálculo de métricas de riesgo y el seguimiento de carteras.

Ejemplo en Finanzas:

# Crear un data frame con datos de precios de acciones

acciones <- data.frame(
  Ticker = c("AAPL", "MSFT", "GOOGL"),
  Precio = c(150, 300, 250)
  )

# Calcular el valor total de la cartera

valor_total <- sum(acciones$Precio)

# Visualizar la cartera

print(acciones)
  Ticker Precio
1   AAPL    150
2   MSFT    300
3  GOOGL    250
cat("Valor total de la cartera:", valor_total, "n")
Valor total de la cartera: 700 n

En resumen, la manipulación de objetos es fundamental para gestionar y analizar datos financieros de manera efectiva, desarrollar modelos financieros y automatizar tareas relacionadas con la gestión de inversiones y riesgos en el contexto financiero.

b) Definir y ejemplificar Clases, objetos, matrices, arreglos, vectores

-Clases en r: En RStudio, las clases se refieren a la forma en que los objetos se organizan y se comportan. Las clases en RStudio se definen utilizando el sistema de clases S3. Cada objeto en R tiene una clase implícita definida en S3, que se puede acceder utilizando la función class( ).

Las clases en RStudio permiten agrupar objetos similares y definir métodos específicos para trabajar con esos objetos. Los métodos son funciones que se aplican a objetos de una clase específica. Esto permite un enfoque orientado a objetos en RStudio, donde los objetos de diferentes clases pueden tener comportamientos y propiedades diferentes.

# Crear un objeto con la clase "MiClase"
miObjeto <- list(
  numero = 42,
  texto = "Hola, Mundo!"
)

# Asignar la clase "MiClase" al objeto
class(miObjeto) <- "MiClase"

# Acceder a los atributos del objeto
miObjeto$numero
[1] 42
miObjeto$texto
[1] "Hola, Mundo!"

-Objetos en r: En RStudio, los objetos son estructuras de datos que se utilizan para almacenar información y realizar operaciones en ella. Los objetos en RStudio pueden ser de diferentes tipos, como vectores, matrices, arreglos, marcos de datos y listas.

# Crear un objeto llamado "mi_objeto" que contiene un vector numérico
mi_objeto <- c(1, 2, 3, 4, 5)

# Imprimir el contenido del objeto
print(mi_objeto)
[1] 1 2 3 4 5
# Realizar operaciones con el objeto
suma <- sum(mi_objeto)
promedio <- mean(mi_objeto)

# Imprimir los resultados
print("Suma:", suma)
[1] "Suma:"
print("Promedio:", promedio)
[1] "Promedio:"

-Matrices en r: En RStudio, al igual que en el lenguaje de programación R en general, una matriz es una estructura de datos bidimensional que se utiliza para almacenar datos en forma de una cuadrícula de filas y columnas. Cada elemento en una matriz debe ser del mismo tipo de datos, generalmente números, aunque también se pueden utilizar otros tipos, como caracteres o lógicos. Las matrices son especialmente útiles para trabajar con datos tabulares y realizar operaciones matriciales y algebraicas.

# Crear una matriz 3x3
matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, ncol = 3)
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

-Arreglos en r: En RStudio y en el lenguaje de programación R, un “arreglo” se refiere a una estructura de datos multidimensional que permite almacenar datos en más de dos dimensiones. Los arreglos son una generalización de las matrices y se utilizan cuando necesitas manejar datos en tres o más dimensiones. Para crear un arreglo en R, puedes utilizar la función array( ). Los arreglos son útiles cuando necesitas trabajar con datos que tienen múltiples dimensiones, como datos tridimensionales en imágenes médicas, series temporales multidimensionales o datos de sensores en un sistema tridimensional, entre otros casos. R facilita la manipulación y el análisis de arreglos multidimensionales mediante funciones y operaciones específicas.

# Crear un arreglo tridimensional de 2x3x4
array(1:24, dim = c(2, 3, 4))
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

, , 3

     [,1] [,2] [,3]
[1,]   13   15   17
[2,]   14   16   18

, , 4

     [,1] [,2] [,3]
[1,]   19   21   23
[2,]   20   22   24

-Vectores en r: Un vector en RStudio es una estructura de datos que se utiliza para almacenar una secuencia ordenada de elementos del mismo tipo, como números, caracteres o valores lógicos. En RStudio, como en el lenguaje de programación R en general, los vectores son una de las estructuras de datos más fundamentales y ampliamente utilizadas.

Un vector puede ser de tipo numérico, de caracteres, lógico, complejo o de otros tipos de datos. Los vectores son muy versátiles y se utilizan ampliamente para almacenar datos y realizar operaciones en RStudio y R. Puedes acceder a elementos individuales del vector, realizar cálculos matemáticos, aplicar funciones, crear gráficos y más utilizando vectores. La capacidad de trabajar con vectores es esencial para la programación y el análisis de datos en RStudio y R.

mi_vector_numerico <- c(1, 2, 3, 4, 5)
mi_vector_numerico
[1] 1 2 3 4 5

c) ¿Qué es indentación?

En R, la identacion es el uso de espacios o tabulaciones al comienzo de una línea de texto para indicar la estructura y jerarquía del código en un programa. La notación se usa con frecuencia en R para estructuras de control, como funciones de definición y bucles y condicionales. Aunque la identificación es esencial para hacer que el código sea más legible y comprensible, no es una característica necesaria para que funcione correctamente.

La identación en R:

  1. Estructura de control:

Las estructuras de control, como bucles y condicionales, utilizan la identación para determinar qué partes del código están dentro de una estructura en R. Por ejemplo, el código que se ejecutará dentro de esa estructura debe estar correctamente identicado en un bucle for o un condicional if. Esto le ayuda a comprender visualmente qué parte del programa contiene código.

# Ejemplo de identación en un bucle for

for (i in 1:5) {
# El código dentro del bucle debe estar identado
print(i)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
# Ejemplo de identación en un condicional if

x <- -10

if (x > 5) {# El código dentro del condicional debe estar identado
cat("x es mayor que 5n")
}
  1. Definición de Funciones:

La identificación es crucial al definir funciones en R. Una función comienza con la palabra clave function, por lo que el cuerpo de la función debe tener un identado con al menos dos espacios, aunque se recomienda cuatro. La identificación determina qué sección del código pertenece al cuerpo de la función y qué sección está fuera de él.

# Ejemplo de definición de una función en R

mi_funcion <- function(x, y) {# El cuerpo de la función debe estar identado
resultado <- x + y
return(resultado)
}

# Llamada a la función

resultado <- mi_funcion(3, 7)
print(resultado)
[1] 10
  1. Legibilidad:

Para mejorar la legibilidad del código, la identificación es esencial. El código correctamente identado es más fácil de comprender y mantener. Facilita la detección de errores y la identificación de bloques de código. Un buen identado es importante cuando se trabaja en equipo, porque permite que otros programadores comprendan mejor el flujo de desarrollo.

# Ejemplo de legibilidad con identación

condición_larga <- TRUE
otra_condición_larga <- TRUE
última_condición_larga <- TRUE

if (condición_larga && otra_condición_larga &&
última_condición_larga) {
# Haciendo el código más legible
# mediante la identación

cat("Todas las condiciones son verdaderasn")

}
Todas las condiciones son verdaderasn
  1. Convención de Estilo:

R tiene estilos que indican incisión. La mayoría de los programadores de R organizan su código con una identación de dos o cuatro espacios. Esto hace que el código parezca más coherente en toda la comunidad R.

# Ejemplo que sigue la convención de estilo con 4 espacios de identación

mi_funcion <- function(x, y) {# Usar cuatro espacios para identar
resultado <- x + y
return(resultado)
}

# Ejemplo que sigue la convención de estilo con 2 espacios de identación

otra_funcion <- function(a, b) {# Usar dos espacios para identar
resultado <- a * b
return(resultado)
}

d) Detallar las Expresiones condicionales (if, if else, Elif ,or, and, Not, entre otros).

  • If: La expresión if se utiliza para ejecutar un bloque de código si una condición es verdadera.

    precio_accion <- 100
    if (precio_accion > 90) {
      cat("Comprar accionesn")
    }
    Comprar accionesn
  • if else: La expresión if else permite ejecutar un bloque de código si la condición es verdadera y otro bloque si es falsa.

    precio_accion <- 80
    if (precio_accion > 90) {
      cat("Comprar accionesn")
    } else {
      cat("No comprar accionesn")
    }
    No comprar accionesn
  • else if: La expresión Else If utiliza para comprobar múltiples condiciones en secuencia.

    precio_accion <- 95
    if (precio_accion > 100) {
      cat("Vender accionesn")
    } else if (precio_accion > 90) {
      cat("Mantener accionesn")
    } else {
      cat("Comprar accionesn")
    }
    Mantener accionesn
  • Operador OR (|, ||): Se utiliza para comprobar si al menos una de dos condiciones es verdadera.

    rendimiento_anual <- 8
    if (rendimiento_anual > 10 | rendimiento_anual < 0) {
      cat("Rendimiento inusualn")
    }
  • Operador AND (&, &&): Se utiliza para comprobar si ambas condiciones son verdaderas.

    valor_inversion <- 50000
    plazo <- 3
    if (valor_inversion >= 50000 & plazo >= 3) {
      cat("Inversión a largo plazon")
    }
    Inversión a largo plazon
  • Operador NOT (!): Se utiliza para negar una condición, es decir, verifica si una condición es falsa.

    deuda <- 0
    if (!deuda) {
      cat("Sin deudasn")
    }
    Sin deudasn

Estas expresiones condicionales y operadores lógicos en R son fundamentales en finanzas para tomar decisiones basadas en reglas lógicas y condiciones específicas. Se aplican en el análisis de datos financieros, la gestión de carteras, el cálculo de riesgos y la automatización de tareas relacionadas con la gestión financiera. Los ejemplos anteriores ilustran cómo se pueden usar en el contexto financiero para la toma de decisiones y el análisis de datos.

lll. Bucles

a) ¿Qué es un bucle?

En general, un bucle es una estructura de control que permite repetir un bloque de instrucciones las veces que sea necesario, hasta que la condición asignada a dicho bucle deja de cumplirse. El bloque de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se suele llamar iteración.

Los dos bucles más utilizados en programación R son el bucle while, el bucle for que son los que presentaremos a continuación.

b) Construcción de bucles

En programación, la construcción de bucles es una técnica fundamental que permite la repetición de un conjunto de instrucciones un número específico de veces o hasta que se cumpla una condición particular. Los bucles son esenciales para la automatización de tareas y la iteración a través de datos.

Existen dos tipos principales de bucles utilizados en la programación: el bucle for y el bucle while.

Blucle for en RStudios:

El bucle “for” se utiliza cuando sabes cuántas veces quieres repetir un bloque de código. Generalmente, se utiliza para iterar sobre una secuencia, como una lista de números.

En este ejemplo este código imprimirá los números del 1 al 5 en la consola:

 # Ejemplo de bucle for

for (i in 1:5) {
print(i)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Este ejemplo muestra cómo usar un bucle “for” para calcular la suma de los primeros 10 números enteros.

# Inicializa una variable para almacenar la suma

suma <- 0

# Usamos el bucle for para sumar los primeros 10 números enteros

for (i in 1:10) {
suma <- suma + i
}

# Muestra el resultado

cat("La suma de los primeros 10 números enteros es:", suma)
La suma de los primeros 10 números enteros es: 55

Blucle while en RStudios:

El bucle while se utiliza cuando deseas repetir un bloque de código mientras se cumple una condición específica. No es necesario saber de antemano cuántas veces se repetirá el bucle.

Este código imprimirá los números del 1 al 5 mientras i sea menor o igual a 5:

# Ejemplo de bucle while en RStudio

i <- 1
while (i <= 5) {
print(i)
i <- i + 1
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Este ejemplo muestra cómo usar un bucle while para contar hacia atrás desde 10 hasta 1.

# Inicializa una variable para contar

contador <- 10

# Bucle while para contar hacia atrás

while (contador >= 1) {
cat(contador, " ")
contador <- contador - 1
}
10  9  8  7  6  5  4  3  2  1  

Ambos tipos de bucles son útiles en diferentes situaciones. Los bucles for son adecuados cuando conoces la cantidad de iteraciones, mientras que los bucles while son útiles cuando la repetición está determinada por una condición.

c) Tipos de bucles

Además de los bucles for y while, R también proporciona otros tipos de bucles que pueden ser útiles en diferentes situaciones. Aquí están algunos de ellos:

  1. Bucle repeat : El bucle repeat se utiliza para ejecutar un bloque de código indefinidamente hasta que se alcance una condición de salida.
# Ejemplo de bucle repeat con condición de salida
contador <- 1
repeat {
  print(contador)
  contador <- contador + 1
  
  if (contador > 5) {
    break
  }
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
  1. Bucle implícito usando aplly : La función apply se utiliza para aplicar una función a los elementos de una matriz o un array.

    # Ejemplo de bucle implícito con apply
    matriz <- matrix(1:12, nrow = 3)
    resultados <- apply(matriz, 2, sum)  # Suma por columnas
    print(resultados)
    [1]  6 15 24 33
  2. Bucle implícito usando laplly : La función lapply se utiliza para aplicar una función a cada elemento de una lista.

# Ejemplo de bucle implícito con lapply
lista_numeros <- list(a = 1:3, b = 4:6, c = 7:9)
resultados <- lapply(lista_numeros, sum)
print(resultados)
$a
[1] 6

$b
[1] 15

$c
[1] 24

d) Declaraciones de control:

En el lenguaje de programación R, las “declaraciones de control” se refieren a las estructuras que permiten controlar el flujo de ejecución de un programa. Estas estructuras son fundamentales para tomar decisiones, repetir acciones o ejecutar código en función de ciertas condiciones. Las declaraciones de control más comunes en R son: 1.-Declaración if: Permite ejecutar un bloque de código si una condición es verdadera. Si la condición es falsa, el bloque de código no se ejecuta.

{if (condición) {# Código a ejecutar si la condición es verdadera}

2.-Declaración else: Puede utilizarse en conjunto con la declaración if para especificar un bloque de código que se ejecutará cuando la condición sea falsa.

if (condición) {# Código a ejecutar si la condición es verdadera}

else {# Código a ejecutar si la condición es falsa}

3.-Declaración else if: Permite manejar múltiples condiciones en secuencia. Si la primera condición es falsa, se evalúa la siguiente.

if (condición1) { # Código a ejecutar si la condición1 es verdadera }

else if (condición2) { # Código a ejecutar si la condición2 es verdadera }

else { # Código a ejecutar si ninguna de las condiciones es verdadera }

4.-Bucles while: Permite ejecutar un bloque de código repetidamente mientras una condición sea verdadera.

while (condición) { # Código a ejecutar mientras la condición sea verdadera }

5.-Bucle for: Se utiliza para iterar sobre una secuencia (por ejemplo, una secuencia de números) y ejecutar un bloque de código en cada iteración.

for (variable in secuencia) { # Código a ejecutar en cada iteración

Estas declaraciones de control son esenciales para escribir programas en R que puedan tomar decisiones y realizar tareas repetitivas de manera eficiente. Puedes combinar estas estructuras para crear programas más complejos y poderosos.

Conclusiones

1) El lenguaje de programación R es un lenguaje potente con un gran objetivo orientado a la estadística es por eso que si nos profundizamos en el podremos conocerlo y analizarlo más, para así poderlo aplicarlo en nuestra carrera.

2) R es un lenguaje muy potente de programación estadística. Tiene un modo tipo consola de comandos que está muy bien que te permite ir obteniendo respuestas a tus preguntas muy rápidamente. Permite crear funciones, loops, condicionales, y realizar prácticamente cualquier tarea imaginable de minería de datos.