Introducción

R es un lenguaje de programación y entorno de desarrollo utilizado principalmente para análisis estadístico y visualización de datos. Es una herramienta poderosa y versátil que ha ganado popularidad en la comunidad de ciencia de datos y estadísticas debido a su flexibilidad y amplia variedad de paquetes y librerías.

RStudio es un entorno de desarrollo integrado (IDE) diseñado específicamente para trabajar con R. Proporciona una interfaz de usuario amigable que facilita la escritura de código, la gestión de proyectos y la generación de informes reproducibles.

En conjunto, R y RStudio son herramientas esenciales para cualquier persona que trabaje en análisis de datos, estadísticas, ciencia de datos o programación. Te permiten cargar datos, realizar análisis estadísticos complejos, crear gráficos impresionantes y compartir tus resultados de manera efectiva.

valores

Una variable es un nombre que hace referencia a un valor. Una de las características más poderosas de un lenguaje de programación es la capacidad de manipular variables. Una variable es el nombre de una ubicación de memoria reservada que contiene algún valor.

Por ejemplo:

x <- 10

Aquí, ‘x’ es el nombre de la variable, <- es un operador de asignación y 10 es el valor o literal.

Entonces, al usar el operador de asignación <- en R, podemos reservar memoria para el valor sin declararlo explícitamente.

Reglas para definir un nombre de variable en R

  1. El nombre de una variable debe comenzar con una letra o un punto (.) seguido de una letra; no puede comenzar con un número.

  2. Puede contener letras (AZ, az), números (0-9) y puntos (.) como caracteres válidos en un nombre de variable en R.

  3. En R, los nombres de variables son sensibles a las mayúsculas y minúsculas. Esto significa que R distingue entre letras mayúsculas y minúsculas en los nombres de las variables.

Para nombres de variables de varias palabras, se suelen usar guiones bajos (nombre_variable) o puntos (nombre.variable). Sin embargo, algunos usuarios prefieren utilizar “CamelCase” o “PascalCase” (por ejemplo, nombreVariable) para nombres de variables en lugar de guiones bajos.

Precaución: Es importante evitar usar los nombres de funciones integradas de R para nombrar tus variables, ya que esto podría causar conflictos en el código.

Operadores aritméticos en R

Los operadores aritméticos son esenciales para realizar operaciones matemáticas como suma, resta, multiplicación, división, entre otras. A continuación, se presenta una lista de los operadores aritméticos en R:

  • + (suma): Se utiliza para sumar dos valores.
  • - (resta): Resta el valor del lado derecho del valor del lado izquierdo.
  • * (multiplicación): Multiplica dos valores.
  • / (división): Divide el valor del lado izquierdo por el valor del lado derecho.
  • ^ (exponenciación): Eleva el valor del lado izquierdo a la potencia del valor del lado derecho.
  • %% (módulo): Devuelve el residuo de la división del valor del lado izquierdo por el valor del lado derecho.
  • %/% (división entera): Devuelve el cociente de la división del valor del lado izquierdo por el valor del lado derecho, eliminando cualquier parte decimal.

\[ \begin{array}{|c|c|c|c|} \hline \text { Nombre del operador } & \text { Símbolo del operador } & \text { Descripción } & \text { Ejemplo } \\ \hline \text { suma } & + & \text { Suma los dos operandos } & a+b \\ \hline \text { resta } & - & \text { Resta los operandos derechos del operando izquierdo } & a b \\ \hline \text { multiplicación } & \text { * } & \text { Multiplica los dos operandos } & a^* b \\ \hline \text { división o división flotante } & \text { / } & \begin{array}{l} \text { El operando izquierdo se divide por el operando } \\ \text { derecho y da como resultado el valor flotante } \end{array} & a / b \\ \hline \text { división de piso } & / / & \begin{array}{l} \text { El operando izquierdo se divide por el operando } \\ \text { derecho y da como resultado el valor mínimo de } \\ \text { división } \end{array} & \mathrm{a} / / \mathrm{b} \\ \hline \text { exponente } & * * & \text { Elevó el operando izquierdo a la potencia del derecho. } & \begin{array}{l} a^{* *} b \quad\left(3^{* *} 2 \text { significa } 3\right. \\ \text { elevado a } 2) \end{array} \\ \hline \text { módulos } & \% & \begin{array}{l} \text { Da el resto de la división del operando izquierdo por el } \\ \text { operando derecho } \end{array} & a \% b \\ \hline \end{array} \]

Ejemplos de Operaciones Aritméticas en R

Puedes realizar operaciones aritméticas en R utilizando nombres de variables abreviados para mayor concisión:

Suma

s <- 5 + 3
s
## [1] 8

Resta

r <- 8 - 2
r
## [1] 6

Multiplicación

m <- 4 * 6
m
## [1] 24

División

d <- 12 / 3
d
## [1] 4

Exponenciación

e <- 2^3
e
## [1] 8

Módulo (Residuo de la división)

mod <- 15 %% 4
mod
## [1] 3

División Entera (Cociente sin parte decimal)

div_entera <- 15 %/% 4
div_entera
## [1] 3

Operadores Relacionales en R

Los operadores relacionales se utilizan para evaluar la relación entre operandos y comparar los valores. Estos operadores devuelven como resultado “Verdadero” o “Falso” según la condición evaluada. A continuación, se presentan los operadores relacionales en R:

\[ \begin{array}{|c|c|c|c|} \hline \text { Nombre del operador } & \text { Símbolo del operador } & \text { Descripción } & \text { Ejemplo } \\ \hline \text { igual a } & == & \begin{array}{l} \text { comparar si el valor del operando izquierdo es igual al } \\ \text { valor del operando derecho } \end{array} & a==b \\ \hline \text { no igual a o diferente } & != & \begin{array}{l} \text { comparar si el valor del operando izquierdo no es igual } \\ \text { al valor del operando derecho } \end{array} & a !=b \\ \hline \text { menor que } & < & \begin{array}{l} \text { comparar si el valor del operando izquierdo es menor } \\ \text { que el valor del operando derecho } \end{array} & a<b \\ \hline \text { mayor que } & > & \begin{array}{l} \text { comparar si el valor del operando izquierdo es mayor } \\ \text { que el valor del operando derecho } \end{array} & a>b \\ \hline \text { Menor que o igual a } & <= & \begin{array}{l} \text { comparar el valor del operando izquierdo es menor o } \\ \text { igual que el valor del operando derecho } \end{array} & a<=b \\ \hline \text { Mayor qué o igual a } & >= & \begin{array}{l} \text { comparar el valor del operando izquierdo es mayor o } \\ \text { igual que el valor del operando derecho } \end{array} & a>=b \\ \hline \end{array} \]

Ejemplo de Operadores Relacionales en R

A continuación se presenta un ejemplo de cómo utilizar operadores relacionales en R:

# Tu código R aquí
# Declaramos dos variables
a <- 20
b <- 28

# No es igual a relación (!=)
a != b
## [1] TRUE
print("no es igual a la relación => (a != b) es:", a != b)
## [1] "no es igual a la relación => (a != b) es:"
# Relación menor que (<)
print("relación menor que => (a < b) es:", a < b)
## [1] "relación menor que => (a < b) es:"
# Menor o igual a relación (<=)
print("relación menor o igual que => (a <= b) es:", a <= b)
## [1] "relación menor o igual que => (a <= b) es:"

Operador de Asignación en R

En R, para asignar un valor a una variable, utilizamos el operador de asignación <-. A continuación, se muestra el operador de asignación en R:

  • <- (asignación): Utilizado para asignar un valor a una variable.

Por ejemplo:

# Asignación de un valor a una variable
variable <- 42

\[ \begin{array}{|c|c|c|c|} \hline \text { Nombre del operador } & \text { Símbolo del operador } & \text { Descripción } & \text { Ejemplo } \\ \hline \text { Asignar } & = & \begin{array}{l} \text { Asignar el valor del operando derecho al operando } \\ \text { izquierdo } \end{array} & a=b \\ \hline \text { Sumar y asignar } & += & \begin{array}{l} \text { Suma el valor del operando derecho al izquierdo y } \\ \text { asigna el resultado al operando izquierdo } \end{array} & a+=10 \ (a=a+10) \\ \hline \text { Restar y asignar } & -= & \begin{array}{l} \text { Reste el valor del operando derecho al izquierdo y } \\ \text { asigne el resultado al operando izquierdo } \end{array} & a-=10 \ (a=a-10) \\ \hline \text { Multiplicar y asignar } & { }^*= & \begin{array}{l} \text { Multiplica el valor del operando derecho por el } \\ \text { izquierdo y asigna el resultado al operando izquierdo. } \end{array} & a^*=10 \left(a=a^* 5\right) \\ \hline \text { Dividir y asignar } & /= & \begin{array}{l} \text { Divida el valor del operando derecho a la izquierda y } \\ \text { asigne el resultado al operando izquierdo } \end{array} & a /=2 \ (a=a / 2) \\ \hline \begin{array}{l} \text { División y asignación del } \\ \text { piso } \end{array} & / /= & \begin{array}{l} \text { Piso divide el valor del operando derecho a la izquierda } \\ \text { y asigna el resultado al operando izquierdo } \end{array} & a / /=9 \ (a=a / / 9) \\ \hline \text { Módulo y asignación } & \%= & \begin{array}{l} \text { Realice el módulo por el valor del operando derecho a la } \\ \text { izquierda y asigne el resultado al operando izquierdo } \end{array} & a \%=3 \ (a=a \% 3) \\ \hline \text { Exponente y asignación } & * * & \begin{array}{l} \text { Realizar el exponente de operandos y asignar el } \\ \text { resultado al operando izquierdo. } \end{array} & a^{\star \star *}=2\left(a=a^{\star \star 2} 2\right) \\ \hline \end{array} \]

# Asignar (<- o =)
a <- 20
cat("Asignar (a <- 20) => ", a, "\n")
## Asignar (a <- 20) =>  20
b <- 25
cat("Asignar (b <- 25) => ", b, "\n")
## Asignar (b <- 25) =>  25
# Sumar y asignar (+=)
a <- a + 10
cat("Sumar y asignar (a <- a + 10) => ", a, "\n")
## Sumar y asignar (a <- a + 10) =>  30
# Restar y asignar (-=)
a <- a - 10
cat("Restar y asignar (a <- a - 10) => ", a, "\n")
## Restar y asignar (a <- a - 10) =>  20
# Multiplicar y asignar (*=)
a <- a * 10
cat("Multiplicar y asignar (a <- a * 10) => ", a, "\n")
## Multiplicar y asignar (a <- a * 10) =>  200
# Dividir y asignar (/=)
a <- a / 10
cat("Dividir y asignar (a <- a / 10) => ", a, "\n")
## Dividir y asignar (a <- a / 10) =>  20
# Piso-Dividir y asignar (%/%=)
b <- b %/% 3
cat("Piso-Dividir y asignar (b <- b %/% 3) => ", b, "\n")
## Piso-Dividir y asignar (b <- b %/% 3) =>  8
# Módulo y asignar (%%=)
b <- b %% 3
cat("Módulo y asignar (b <- b %% 3) => ", b, "\n")
## Módulo y asignar (b <- b %% 3) =>  2
# Exponenciación y asignar (^=)
b <- b^3
cat("Exponenciación y asignar (b <- b^3) => ", b, "\n")
## Exponenciación y asignar (b <- b^3) =>  8

Operadores Lógicos en R

En R, al igual que en Python, se utilizan operadores lógicos para combinar expresiones condicionales. Los operadores lógicos se utilizan para realizar operaciones de lógica booleana y evaluar si las condiciones son verdaderas o falsas.

A continuación, se presenta una tabla con información sobre los operadores lógicos en R:

\[ \begin{array}{|l|c|l|} \hline {\text { Nombre del operador }} & \text { Símbolo del operador } & {\text { Descripción }} \\ \hline \text { AND (y) lógico } & \text{and} & \begin{array}{l} \text { Da como resultado 'True' si ambos operandos son 'Verdadero' y } \\ \text { 'False' en caso contrario. } \end{array} \\ \hline \text { OR (O) lógico } & \text{or} & \begin{array}{l} \text { Da "True" como resultado si alguno de los operandos es } \\ \text { "Verdadero" y "False" en caso contrario. } \end{array} \\ \hline \text { NOT (No) lógico } & \text{not} & \begin{array}{l} \text { Da como resultado 'True' si un operando es 'Falso' y 'True' si } \\ \text { un operando es 'Verdadero'. } \end{array} \\ \hline \end{array} \]

Ejemplo

a <- FALSE
b <- TRUE

# Operador lógico AND (y)
cat("AND lógico => a y b es:", a & b, "\n")
## AND lógico => a y b es: FALSE
# Operador lógico OR (o)
cat("OR lógico => a o b es:", a | b, "\n")
## OR lógico => a o b es: TRUE
# Operador lógico NOT (no)
cat("NO lógico => no b es:", !b, "\n")
## NO lógico => no b es: FALSE

Ejemplos de Tipos de Datos en R

Tipo de Datos Entero (integer)

# Ejemplo de tipo de datos int
a <- 20 # valor entero positivo
a1 <- -20 # Valor entero negativo

# Imprimiendo el valor
cat("a = ", a, "\n")
## a =  20
cat("a1 = ", a1, "\n")
## a1 =  -20
# Comprobar el tipo de variable a
cat("El tipo de variable a es:", class(a), "\n")
## El tipo de variable a es: numeric
cat("El tipo de variable a1 es:", class(a1), "\n")
## El tipo de variable a1 es: numeric
# Ejemplo para tipo de datos flotante
b <- 20.5 # valor flotante positivo
b1 <- -20.5 # Valor flotante negativo

# Imprimiendo el valor
cat("b = ", b, "\n")
## b =  20.5
cat("b1 = ", b1, "\n")
## b1 =  -20.5
# Comprobar el tipo de variable b
cat("El tipo de variable b es:", class(b), "\n")
## El tipo de variable b es: numeric
cat("El tipo de variable b1 es:", class(b1), "\n")
## El tipo de variable b1 es: numeric
# Ejemplo de datos complejos
a <- 20 + 5i
b <- 5i
c <- 10 - 5i
d <- -5i

# Imprimiendo el valor de a
cat("a = ", a, "\n")
## a =  20+5i
# Comprobar el tipo de variable a
cat("El tipo de variable a es:", class(a), "\n")
## El tipo de variable a es: complex
cat("El tipo de variable b es:", class(b), "\n")
## El tipo de variable b es: complex
cat("El tipo de variable c es:", class(c), "\n")
## El tipo de variable c es: complex
cat("El tipo de variable d es:", class(d), "\n")
## El tipo de variable d es: complex

Conversión de tipos en R

  • En R, puedes realizar la conversión de tipos de datos, como convertir de integer a numeric o de numeric a integer, utilizando las funciones as.integer() y as.numeric() respectivamente.

  • Puedes verificar el tipo de cualquier variable en R usando la función class().

  • También puedes convertir un numeric o integer a character utilizando la función as.character(), o convertir cualquier cadena numérica a numeric o integer utilizando las funciones as.numeric() y as.integer() respectivamente.

Cadenas en R

Las cadenas son secuencias de caracteres encerradas entre comillas simples o dobles. Se utilizan comillas simples (’’) o dobles (““) para escribir una cadena de una sola línea en R. Por ejemplo:

# Ejemplos de Codificación en R

# Definir las cadenas
cadena1 <- 'Esta es una cadena entre comillas simples'
cadena2 <- "Esta es una cadena entre comillas dobles"

cadena3 <- '
Línea uno
Línea dos
Línea tres' # cadena multilínea

# Mostrar resultados
cat("cadena1:\n", cadena1, "\n")
## cadena1:
##  Esta es una cadena entre comillas simples
cat("cadena2:\n", cadena2, "\n")
## cadena2:
##  Esta es una cadena entre comillas dobles
cat("cadena3 (cadena multilínea):\n", cadena3, "\n")
## cadena3 (cadena multilínea):
##  
## Línea uno
## Línea dos
## Línea tres

Accediendo a Componentes de una Cadena en R

En R, al igual que en Python, puedes acceder a componentes individuales de una cadena utilizando la indexación. La indexación en R comienza desde 1 (a diferencia de Python, que comienza desde 0).

Por ejemplo, si tienes una cadena en R:

Accediendo a Componentes de una Cadena en R

# Cadena de texto
txt <- "Esto es un ejemplo de cómo usar substr en R."
txt
## [1] "Esto es un ejemplo de cómo usar substr en R."
# Obtener el primer carácter
pc <- substr(txt, 1, 1)
cat("Primer carácter:", pc, "\n")
## Primer carácter: E
# Obtener los primeros 10 caracteres
p10 <- substr(txt, 1, 10)
cat("Primeros 10 caracteres:", p10, "\n")
## Primeros 10 caracteres: Esto es un
# Obtener del carácter 6 al 15
c6_a_15 <- substr(txt, 6, 15)
cat("Caracteres del 6 al 15:", c6_a_15, "\n")
## Caracteres del 6 al 15: es un ejem
# Obtener los últimos 5 caracteres
u5 <- substr(txt, nchar(txt) - 4, nchar(txt))
cat("Últimos 5 caracteres:", u5, "\n")
## Últimos 5 caracteres: en R.

Variables abreviadas para concatenar cadenas

c1 <- "Hola, "
c2 <- "mundo!"

# Concatenación de cadenas
res <- paste(c1, c2)

# Imprimir el resultado
cat("Concatenación:", res, "\n")
## Concatenación: Hola,  mundo!

En este ejemplo, las variables c1 y c2 contienen las cadenas que deseas concatenar. Luego, utilizamos la función paste() para concatenar estas cadenas y almacenamos el resultado en la variable res. Finalmente, imprimimos el resultado utilizando cat()

Operaciones de cadena y métodos integrados.

En Python para realizar diversas operaciones con cadenas. La sintaxis básica es str.String_method(). Algunos de los métodos de cadena más importantes se detallan a continuación:

  1. upper(): En R, puedes usar toupper(cadena) para convertir una cadena a mayúsculas.

  2. lower(): En R, puedes usar tolower(cadena) para convertir una cadena a minúsculas.

  3. capitalize(): En R, puedes usar tools::toTitleCase(cadena) para capitalizar la primera letra de una cadena.

  4. split(): En R, puedes usar strsplit(cadena, separador) para dividir una cadena según un separador y obtener una lista de elementos.

  5. strip(): No hay un equivalente directo en R para eliminar espacios en blanco iniciales y finales de una cadena. Sin embargo, puedes usar trimws(cadena) para eliminar espacios en blanco iniciales y finales.

  6. rstrip(): No hay un equivalente directo en R para eliminar caracteres del lado derecho de una cadena. Puedes usar stringr::str_trim(cadena, side = “right”) para eliminar espacios en blanco del lado derecho.

  7. lstrip(): No hay un equivalente directo en R para eliminar caracteres del lado izquierdo de una cadena. Puedes usar stringr::str_trim(cadena, side = “left”) para eliminar espacios en blanco del lado izquierdo.

  8. len(): En R, puedes usar nchar(cadena) para obtener la longitud de una cadena.

  9. replace(): En R, puedes usar gsub(subcadena_a_reemplazar, nueva_subcadena, cadena) para reemplazar una subcadena en una cadena.

  10. startswith(): No hay un equivalente directo en R. Puedes usar grepl(“^subcadena”, cadena) para verificar si una cadena comienza con una subcadena.

  11. endswith(): No hay un equivalente directo en R. Puedes usar grepl(“subcadena$”, cadena) para verificar si una cadena termina con una subcadena.

  12. isdigit(): No hay un equivalente directo en R. Puedes usar grepl(“1+$”, cadena) para verificar si todos los caracteres de la cadena son dígitos.

  13. isdecimal(): No hay un equivalente directo en R. Puedes usar grepl(“2+$”, cadena) para verificar si todos los caracteres de la cadena son decimales.

  14. isalpha(): No hay un equivalente directo en R. Puedes usar grepl(“3+$”, cadena) para verificar si todos los caracteres de la cadena son letras del alfabeto.

  15. islower(): No hay un equivalente directo en R. Puedes usar grepl(“4+$”, cadena) para verificar si la cadena está en minúsculas.

  16. isupper(): No hay un equivalente directo en R. Puedes usar grepl(“5+$”, cadena) para verificar si la cadena está en mayúsculas.

  17. isalnum(): No hay un equivalente directo en R. Puedes usar grepl(“6+$”, cadena) para verificar si todos los caracteres de la cadena son alfanuméricos.

Estos son los equivalentes aproximados en R para las operaciones de cadena que mencionaste en Python. Puedes utilizar estas funciones en R según tus necesidades específicas.

Ejemplos :

# Convertir una cadena a mayúsculas en R.

cadena <- "hola mundo"
mayusculas <- toupper(cadena)
print(mayusculas)
## [1] "HOLA MUNDO"
# Convertir una cadena a minúsculas en R.

cadena <- "Hola Mundo"
minusculas <- tolower(cadena)
print(minusculas)
## [1] "hola mundo"
# Capitalizar la primera letra de una cadena en R.


cadena <- "esto es un ejemplo"
capitalizada <- tools::toTitleCase(cadena)
print(capitalizada)
## [1] "Esto Es Un Ejemplo"
# Dividir una cadena según un separador en R.

cadena <- "manzana,pera,naranja"
elementos <- unlist(strsplit(cadena, ","))
print(elementos)
## [1] "manzana" "pera"    "naranja"
# cadena <- "manzana,pera,naranja"
elementos <- unlist(strsplit(cadena, ","))
print(elementos)
## [1] "manzana" "pera"    "naranja"
cadena <- "   hola mundo   "
sin_espacios <- trimws(cadena)
print(sin_espacios)
## [1] "hola mundo"
# Eliminar espacios en blanco del lado derecho o izquierdo de una cadena en R.

cadena <- "   hola mundo   "
sin_espacios_derecha <- stringr::str_trim(cadena, side = "right")
sin_espacios_izquierda <- stringr::str_trim(cadena, side = "left")
print(sin_espacios_derecha)
## [1] "   hola mundo"
print(sin_espacios_izquierda)
## [1] "hola mundo   "
# Obtener la longitud de una cadena en R.

cadena <- "hola"
longitud <- nchar(cadena)
print(longitud)
## [1] 4
# Reemplazar una subcadena en una cadena en R.
cadena <- "hola mundo"
nueva_cadena <- gsub("mundo", "amigo", cadena)
print(nueva_cadena)
## [1] "hola amigo"
# Verificar si una cadena comienza con una subcadena en R.

cadena <- "Hola Mundo"
comienza_con_hola <- grepl("^Hola", cadena)
print(comienza_con_hola)
## [1] TRUE
# Verificar si una cadena termina con una subcadena en R.


cadena <- "Hola Mundo"
termina_con_mundo <- grepl("Mundo$", cadena)
print(termina_con_mundo)
## [1] TRUE
# Verificar si todos los caracteres de la cadena son dígitos en R.

cadena <- "12345"
son_digitos <- grepl("^[0-9]+$", cadena)
print(son_digitos)
## [1] TRUE
# Verificar si todos los caracteres de la cadena son decimales en R.

cadena <- "123.45"
son_decimales <- grepl("^[0-9.]+$", cadena)
print(son_decimales)
## [1] TRUE
# Verificar si todos los caracteres de la cadena son letras del alfabeto en R.

cadena <- "Hola"
son_letras <- grepl("^[A-Za-z]+$", cadena)
print(son_letras)
## [1] TRUE
# Verificar si la cadena está en minúsculas en R.

cadena <- "hola mundo"
es_minuscula <- grepl("^[a-z]+$", cadena)
print(es_minuscula)
## [1] FALSE
# Verificar si la cadena está en mayúsculas en R.


cadena <- "HOLA MUNDO"
es_mayuscula <- grepl("^[A-Z]+$", cadena)
print(es_mayuscula)
## [1] FALSE
# Verificar si todos los caracteres de la cadena son alfanuméricos en R 

cadena <- "Hola123"
es_alfanumerico <- grepl("^[A-Za-z0-9]+$", cadena)
print(es_alfanumerico)
## [1] TRUE
texto <- "¡QUE RÁPIDO PASA EL TIEMPO!
De verdad no puedo creer que apenas unos instantes atrás estaba viajando en ese ya lejano 9 de enero de Guadalajara, México, a Lima, Perú.
Han pasado 5 mesesotes donde he tenido el gusto, orgullo y honor de formar parte del Tour 1 y 2 DPC SA, Lima Major, Dreamleague S19 y Berlin Major. Creo que no tenía un año tan activo desde el 2017 lol.
Muchísimas gracias a ESB - Electronic Sports Broadcasting y 4D Esports por permitirme seguir formando parte de esta hermosa escena en los distintos eventos que han transcurrido en el año; el poder trabajar en distintos momentos y proyectos para ambas productoras me llena de orgullo y alegría. Sigan siendo cracks, cada quien a su modo tan único de transmitir y traer el Dota 2 a los fans. 
Quiero aclarar que mis comentarios sobre el pago pendiente de la Lima Major que hice en stream eran en total plan de joda, de meme y chacota. Pero en retrospectiva me salió muy bajita la broma y pido disculpas públicas por las molestias causadas de mi parte a los afectados. 
Avo+ NO ME DEBE NADA A MI DE FORMA PERSONAL.
NO ME DEBE N A D A.
YA DEJEN DE JODERLO, POR FAVOOOOOR XD
Ya estoy en conversaciones para recibir la remuneración y de nuevo lo repito, Avo no tiene nada que ver con ese pago, solo quería molestarlo porque en su momento él fue mi contacto principal para trabajar en el stream en inglés de la Lima Major, pero obviamente ustedes no tenían ese contexto, así que mi pésimo chiste se salió de control. (ptm hasta dije GAH para hacer notar que no era enserio pero no fue suficiente :'u)
Vive y aprende, lol.
Eso sería todo por ahora, si aún no me despiden de ESB, entonces nos vemos muy muy pronto para cerrar el Tour 3 SA DPC y la Bali Major de cara al TI 2023.
Por último, quiero de verdad agradecer a todos y cada uno de los que siempre están apoyando y mandando la buena vibra en los streams. No saben lo mucho que significa para mí que a pesar de los años y mis pifias e inconsistencias todavía haya gente bella y hermosa que manda su apoyo y energía positiva a mi persona. GRACIAS GRACIAS GRACIAS 🙏
Todos los días intento darles la mejor versión posible de mí en stream. A veces se logra, a veces no JAJA, pero aprecio mucho a todos los que se toman un poco de su valioso tiempo para seguir apoyando el sueño de este viejo y loco mexicano que ama el Dota tanto como lo aman en este precioso país ❤️
¡Cuídense mucho locos, nos vemos pronto!
ATTE. CARLOS \"THE AZATHOTH\" RIOS, MEJOR CONOCIDO EN EL BAJO MUNDO COMO Sarcasmo Gamer KTMRE K BA PASAR
(por si no lo captaron, eso último es broma XDDD)"

# Aplicar funciones de cadena
mayusculas <- toupper(texto)
mayusculas
## [1] "¡QUE RÁPIDO PASA EL TIEMPO!\nDE VERDAD NO PUEDO CREER QUE APENAS UNOS INSTANTES ATRÁS ESTABA VIAJANDO EN ESE YA LEJANO 9 DE ENERO DE GUADALAJARA, MÉXICO, A LIMA, PERÚ.\nHAN PASADO 5 MESESOTES DONDE HE TENIDO EL GUSTO, ORGULLO Y HONOR DE FORMAR PARTE DEL TOUR 1 Y 2 DPC SA, LIMA MAJOR, DREAMLEAGUE S19 Y BERLIN MAJOR. CREO QUE NO TENÍA UN AÑO TAN ACTIVO DESDE EL 2017 LOL.\nMUCHÍSIMAS GRACIAS A ESB - ELECTRONIC SPORTS BROADCASTING Y 4D ESPORTS POR PERMITIRME SEGUIR FORMANDO PARTE DE ESTA HERMOSA ESCENA EN LOS DISTINTOS EVENTOS QUE HAN TRANSCURRIDO EN EL AÑO; EL PODER TRABAJAR EN DISTINTOS MOMENTOS Y PROYECTOS PARA AMBAS PRODUCTORAS ME LLENA DE ORGULLO Y ALEGRÍA. SIGAN SIENDO CRACKS, CADA QUIEN A SU MODO TAN ÚNICO DE TRANSMITIR Y TRAER EL DOTA 2 A LOS FANS. \nQUIERO ACLARAR QUE MIS COMENTARIOS SOBRE EL PAGO PENDIENTE DE LA LIMA MAJOR QUE HICE EN STREAM ERAN EN TOTAL PLAN DE JODA, DE MEME Y CHACOTA. PERO EN RETROSPECTIVA ME SALIÓ MUY BAJITA LA BROMA Y PIDO DISCULPAS PÚBLICAS POR LAS MOLESTIAS CAUSADAS DE MI PARTE A LOS AFECTADOS. \nAVO+ NO ME DEBE NADA A MI DE FORMA PERSONAL.\nNO ME DEBE N A D A.\nYA DEJEN DE JODERLO, POR FAVOOOOOR XD\nYA ESTOY EN CONVERSACIONES PARA RECIBIR LA REMUNERACIÓN Y DE NUEVO LO REPITO, AVO NO TIENE NADA QUE VER CON ESE PAGO, SOLO QUERÍA MOLESTARLO PORQUE EN SU MOMENTO ÉL FUE MI CONTACTO PRINCIPAL PARA TRABAJAR EN EL STREAM EN INGLÉS DE LA LIMA MAJOR, PERO OBVIAMENTE USTEDES NO TENÍAN ESE CONTEXTO, ASÍ QUE MI PÉSIMO CHISTE SE SALIÓ DE CONTROL. (PTM HASTA DIJE GAH PARA HACER NOTAR QUE NO ERA ENSERIO PERO NO FUE SUFICIENTE :'U)\nVIVE Y APRENDE, LOL.\nESO SERÍA TODO POR AHORA, SI AÚN NO ME DESPIDEN DE ESB, ENTONCES NOS VEMOS MUY MUY PRONTO PARA CERRAR EL TOUR 3 SA DPC Y LA BALI MAJOR DE CARA AL TI 2023.\nPOR ÚLTIMO, QUIERO DE VERDAD AGRADECER A TODOS Y CADA UNO DE LOS QUE SIEMPRE ESTÁN APOYANDO Y MANDANDO LA BUENA VIBRA EN LOS STREAMS. NO SABEN LO MUCHO QUE SIGNIFICA PARA MÍ QUE A PESAR DE LOS AÑOS Y MIS PIFIAS E INCONSISTENCIAS TODAVÍA HAYA GENTE BELLA Y HERMOSA QUE MANDA SU APOYO Y ENERGÍA POSITIVA A MI PERSONA. GRACIAS GRACIAS GRACIAS 👕\nTODOS LOS DÍAS INTENTO DARLES LA MEJOR VERSIÓN POSIBLE DE MÍ EN STREAM. A VECES SE LOGRA, A VECES NO JAJA, PERO APRECIO MUCHO A TODOS LOS QUE SE TOMAN UN POCO DE SU VALIOSO TIEMPO PARA SEGUIR APOYANDO EL SUEÑO DE ESTE VIEJO Y LOCO MEXICANO QUE AMA EL DOTA TANTO COMO LO AMAN EN ESTE PRECIOSO PAÍS ❤️\n¡CUÍDENSE MUCHO LOCOS, NOS VEMOS PRONTO!\nATTE. CARLOS \"THE AZATHOTH\" RIOS, MEJOR CONOCIDO EN EL BAJO MUNDO COMO SARCASMO GAMER KTMRE K BA PASAR\n(POR SI NO LO CAPTARON, ESO ÚLTIMO ES BROMA XDDD)"
minusculas <- tolower(texto)
minusculas
## [1] "¡que rápido pasa el tiempo!\nde verdad no puedo creer que apenas unos instantes atrás estaba viajando en ese ya lejano 9 de enero de guadalajara, méxico, a lima, perú.\nhan pasado 5 mesesotes donde he tenido el gusto, orgullo y honor de formar parte del tour 1 y 2 dpc sa, lima major, dreamleague s19 y berlin major. creo que no tenía un año tan activo desde el 2017 lol.\nmuchísimas gracias a esb - electronic sports broadcasting y 4d esports por permitirme seguir formando parte de esta hermosa escena en los distintos eventos que han transcurrido en el año; el poder trabajar en distintos momentos y proyectos para ambas productoras me llena de orgullo y alegría. sigan siendo cracks, cada quien a su modo tan único de transmitir y traer el dota 2 a los fans. \nquiero aclarar que mis comentarios sobre el pago pendiente de la lima major que hice en stream eran en total plan de joda, de meme y chacota. pero en retrospectiva me salió muy bajita la broma y pido disculpas públicas por las molestias causadas de mi parte a los afectados. \navo+ no me debe nada a mi de forma personal.\nno me debe n a d a.\nya dejen de joderlo, por favooooor xd\nya estoy en conversaciones para recibir la remuneración y de nuevo lo repito, avo no tiene nada que ver con ese pago, solo quería molestarlo porque en su momento él fue mi contacto principal para trabajar en el stream en inglés de la lima major, pero obviamente ustedes no tenían ese contexto, así que mi pésimo chiste se salió de control. (ptm hasta dije gah para hacer notar que no era enserio pero no fue suficiente :'u)\nvive y aprende, lol.\neso sería todo por ahora, si aún no me despiden de esb, entonces nos vemos muy muy pronto para cerrar el tour 3 sa dpc y la bali major de cara al ti 2023.\npor último, quiero de verdad agradecer a todos y cada uno de los que siempre están apoyando y mandando la buena vibra en los streams. no saben lo mucho que significa para mí que a pesar de los años y mis pifias e inconsistencias todavía haya gente bella y hermosa que manda su apoyo y energía positiva a mi persona. gracias gracias gracias 👕\ntodos los días intento darles la mejor versión posible de mí en stream. a veces se logra, a veces no jaja, pero aprecio mucho a todos los que se toman un poco de su valioso tiempo para seguir apoyando el sueño de este viejo y loco mexicano que ama el dota tanto como lo aman en este precioso país ❤️\n¡cuídense mucho locos, nos vemos pronto!\natte. carlos \"the azathoth\" rios, mejor conocido en el bajo mundo como sarcasmo gamer ktmre k ba pasar\n(por si no lo captaron, eso último es broma xddd)"
capitalizada <- tools::toTitleCase(texto)
capitalizada
## [1] "¡que RÁPIDO PASA EL TIEMPO!\nDe Verdad No Puedo Creer Que Apenas Unos Instantes Atrás Estaba Viajando en Ese Ya Lejano 9 De Enero De Guadalajara, México, a Lima, Perú.\nHan Pasado 5 Mesesotes Donde He Tenido El Gusto, Orgullo y Honor De Formar Parte Del Tour 1 y 2 DPC SA, Lima Major, Dreamleague S19 y Berlin Major. Creo Que No Tenía Un Año Tan Activo Desde El 2017 Lol.\nMuchísimas Gracias a ESB - Electronic Sports Broadcasting y 4d Esports Por Permitirme Seguir Formando Parte De Esta Hermosa Escena en Los Distintos Eventos Que Han Transcurrido en El Año; El Poder Trabajar en Distintos Momentos y Proyectos Para Ambas Productoras Me Llena De Orgullo y Alegría. Sigan Siendo Cracks, Cada Quien a Su Modo Tan Único De Transmitir y Traer El Dota 2 a Los Fans. \nQuiero Aclarar Que Mis Comentarios Sobre El Pago Pendiente De La Lima Major Que Hice en Stream Eran en Total Plan De Joda, De Meme y Chacota. Pero en Retrospectiva Me Salió Muy Bajita La Broma y Pido Disculpas Públicas Por Las Molestias Causadas De Mi Parte a Los Afectados. \nAvo+ NO ME DEBE NADA a MI DE FORMA PERSONAL.\nNO ME DEBE N a D A.\nYA DEJEN DE JODERLO, POR FAVOOOOOR XD\nYa Estoy en Conversaciones Para Recibir La Remuneración y De Nuevo Lo Repito, Avo No Tiene Nada Que Ver Con Ese Pago, Solo Quería Molestarlo Porque en Su Momento Él Fue Mi Contacto Principal Para Trabajar en El Stream en Inglés De La Lima Major, Pero Obviamente Ustedes No Tenían Ese Contexto, Así Que Mi Pésimo Chiste Se Salió De Control. (Ptm Hasta Dije GAH Para Hacer Notar Que No Era Enserio Pero No Fue Suficiente :'u)\nVive y Aprende, Lol.\nEso Sería Todo Por Ahora, Si Aún No Me Despiden De ESB, Entonces Nos Vemos Muy Muy Pronto Para Cerrar El Tour 3 SA DPC y La Bali Major De Cara Al TI 2023.\nPor Último, Quiero De Verdad Agradecer a Todos y Cada Uno De Los Que Siempre Están Apoyando y Mandando La Buena Vibra en Los Streams. No Saben Lo Mucho Que Significa Para Mí Que a Pesar De Los Años y Mis Pifias e Inconsistencias Todavía Haya Gente Bella y Hermosa Que Manda Su Apoyo y Energía Positiva a Mi Persona. GRACIAS GRACIAS GRACIAS 🙏\nTodos Los Días Intento Darles La Mejor Versión Posible De Mí en Stream. a Veces Se Logra, a Veces No JAJA, Pero Aprecio Mucho a Todos Los Que Se Toman Un Poco De Su Valioso Tiempo Para Seguir Apoyando El Sueño De Este Viejo y Loco Mexicano Que Ama El Dota Tanto Como Lo Aman en Este Precioso País ❤️\n¡cuídense Mucho Locos, Nos Vemos Pronto!\nATTE. CARLOS \"THE AZATHOTH\" RIOS, MEJOR CONOCIDO en EL BAJO MUNDO COMO Sarcasmo Gamer KTMRE K BA PASAR\n(Por Si No Lo Captaron, Eso Último Es Broma XDDD)"
elementos <- strsplit(texto, " ")
elementos
## [[1]]
##   [1] "¡QUE"             "RÁPIDO"           "PASA"            
##   [4] "EL"               "TIEMPO!\nDe"      "verdad"          
##   [7] "no"               "puedo"            "creer"           
##  [10] "que"              "apenas"           "unos"            
##  [13] "instantes"        "atrás"            "estaba"          
##  [16] "viajando"         "en"               "ese"             
##  [19] "ya"               "lejano"           "9"               
##  [22] "de"               "enero"            "de"              
##  [25] "Guadalajara,"     "México,"          "a"               
##  [28] "Lima,"            "Perú.\nHan"       "pasado"          
##  [31] "5"                "mesesotes"        "donde"           
##  [34] "he"               "tenido"           "el"              
##  [37] "gusto,"           "orgullo"          "y"               
##  [40] "honor"            "de"               "formar"          
##  [43] "parte"            "del"              "Tour"            
##  [46] "1"                "y"                "2"               
##  [49] "DPC"              "SA,"              "Lima"            
##  [52] "Major,"           "Dreamleague"      "S19"             
##  [55] "y"                "Berlin"           "Major."          
##  [58] "Creo"             "que"              "no"              
##  [61] "tenía"            "un"               "año"             
##  [64] "tan"              "activo"           "desde"           
##  [67] "el"               "2017"             "lol.\nMuchísimas"
##  [70] "gracias"          "a"                "ESB"             
##  [73] "-"                "Electronic"       "Sports"          
##  [76] "Broadcasting"     "y"                "4D"              
##  [79] "Esports"          "por"              "permitirme"      
##  [82] "seguir"           "formando"         "parte"           
##  [85] "de"               "esta"             "hermosa"         
##  [88] "escena"           "en"               "los"             
##  [91] "distintos"        "eventos"          "que"             
##  [94] "han"              "transcurrido"     "en"              
##  [97] "el"               "año;"             "el"              
## [100] "poder"            "trabajar"         "en"              
## [103] "distintos"        "momentos"         "y"               
## [106] "proyectos"        "para"             "ambas"           
## [109] "productoras"      "me"               "llena"           
## [112] "de"               "orgullo"          "y"               
## [115] "alegría."         "Sigan"            "siendo"          
## [118] "cracks,"          "cada"             "quien"           
## [121] "a"                "su"               "modo"            
## [124] "tan"              "único"            "de"              
## [127] "transmitir"       "y"                "traer"           
## [130] "el"               "Dota"             "2"               
## [133] "a"                "los"              "fans."           
## [136] "\nQuiero"         "aclarar"          "que"             
## [139] "mis"              "comentarios"      "sobre"           
## [142] "el"               "pago"             "pendiente"       
## [145] "de"               "la"               "Lima"            
## [148] "Major"            "que"              "hice"            
## [151] "en"               "stream"           "eran"            
## [154] "en"               "total"            "plan"            
## [157] "de"               "joda,"            "de"              
## [160] "meme"             "y"                "chacota."        
## [163] "Pero"             "en"               "retrospectiva"   
## [166] "me"               "salió"            "muy"             
## [169] "bajita"           "la"               "broma"           
## [172] "y"                "pido"             "disculpas"       
## [175] "públicas"         "por"              "las"             
## [178] "molestias"        "causadas"         "de"              
## [181] "mi"               "parte"            "a"               
## [184] "los"              "afectados."       "\nAvo+"          
## [187] "NO"               "ME"               "DEBE"            
## [190] "NADA"             "A"                "MI"              
## [193] "DE"               "FORMA"            "PERSONAL.\nNO"   
## [196] "ME"               "DEBE"             "N"               
## [199] "A"                "D"                "A.\nYA"          
## [202] "DEJEN"            "DE"               "JODERLO,"        
## [205] "POR"              "FAVOOOOOR"        "XD\nYa"          
## [208] "estoy"            "en"               "conversaciones"  
## [211] "para"             "recibir"          "la"              
## [214] "remuneración"     "y"                "de"              
## [217] "nuevo"            "lo"               "repito,"         
## [220] "Avo"              "no"               "tiene"           
## [223] "nada"             "que"              "ver"             
## [226] "con"              "ese"              "pago,"           
## [229] "solo"             "quería"           "molestarlo"      
## [232] "porque"           "en"               "su"              
## [235] "momento"          "él"               "fue"             
## [238] "mi"               "contacto"         "principal"       
## [241] "para"             "trabajar"         "en"              
## [244] "el"               "stream"           "en"              
## [247] "inglés"           "de"               "la"              
## [250] "Lima"             "Major,"           "pero"            
## [253] "obviamente"       "ustedes"          "no"              
## [256] "tenían"           "ese"              "contexto,"       
## [259] "así"              "que"              "mi"              
## [262] "pésimo"           "chiste"           "se"              
## [265] "salió"            "de"               "control."        
## [268] "(ptm"             "hasta"            "dije"            
## [271] "GAH"              "para"             "hacer"           
## [274] "notar"            "que"              "no"              
## [277] "era"              "enserio"          "pero"            
## [280] "no"               "fue"              "suficiente"      
## [283] ":'u)\nVive"       "y"                "aprende,"        
## [286] "lol.\nEso"        "sería"            "todo"            
## [289] "por"              "ahora,"           "si"              
## [292] "aún"              "no"               "me"              
## [295] "despiden"         "de"               "ESB,"            
## [298] "entonces"         "nos"              "vemos"           
## [301] "muy"              "muy"              "pronto"          
## [304] "para"             "cerrar"           "el"              
## [307] "Tour"             "3"                "SA"              
## [310] "DPC"              "y"                "la"              
## [313] "Bali"             "Major"            "de"              
## [316] "cara"             "al"               "TI"              
## [319] "2023.\nPor"       "último,"          "quiero"          
## [322] "de"               "verdad"           "agradecer"       
## [325] "a"                "todos"            "y"               
## [328] "cada"             "uno"              "de"              
## [331] "los"              "que"              "siempre"         
## [334] "están"            "apoyando"         "y"               
## [337] "mandando"         "la"               "buena"           
## [340] "vibra"            "en"               "los"             
## [343] "streams."         "No"               "saben"           
## [346] "lo"               "mucho"            "que"             
## [349] "significa"        "para"             "mí"              
## [352] "que"              "a"                "pesar"           
## [355] "de"               "los"              "años"            
## [358] "y"                "mis"              "pifias"          
## [361] "e"                "inconsistencias"  "todavía"         
## [364] "haya"             "gente"            "bella"           
## [367] "y"                "hermosa"          "que"             
## [370] "manda"            "su"               "apoyo"           
## [373] "y"                "energía"          "positiva"        
## [376] "a"                "mi"               "persona."        
## [379] "GRACIAS"          "GRACIAS"          "GRACIAS"         
## [382] "🙏\nTodos"        "los"              "días"            
## [385] "intento"          "darles"           "la"              
## [388] "mejor"            "versión"          "posible"         
## [391] "de"               "mí"               "en"              
## [394] "stream."          "A"                "veces"           
## [397] "se"               "logra,"           "a"               
## [400] "veces"            "no"               "JAJA,"           
## [403] "pero"             "aprecio"          "mucho"           
## [406] "a"                "todos"            "los"             
## [409] "que"              "se"               "toman"           
## [412] "un"               "poco"             "de"              
## [415] "su"               "valioso"          "tiempo"          
## [418] "para"             "seguir"           "apoyando"        
## [421] "el"               "sueño"            "de"              
## [424] "este"             "viejo"            "y"               
## [427] "loco"             "mexicano"         "que"             
## [430] "ama"              "el"               "Dota"            
## [433] "tanto"            "como"             "lo"              
## [436] "aman"             "en"               "este"            
## [439] "precioso"         "país"             "❤️\n¡Cuídense"    
## [442] "mucho"            "locos,"           "nos"             
## [445] "vemos"            "pronto!\nATTE."   "CARLOS"          
## [448] "\"THE"            "AZATHOTH\""       "RIOS,"           
## [451] "MEJOR"            "CONOCIDO"         "EN"              
## [454] "EL"               "BAJO"             "MUNDO"           
## [457] "COMO"             "Sarcasmo"         "Gamer"           
## [460] "KTMRE"            "K"                "BA"              
## [463] "PASAR\n(por"      "si"               "no"              
## [466] "lo"               "captaron,"        "eso"             
## [469] "último"           "es"               "broma"           
## [472] "XDDD)"
sin_espacios <- gsub(" ", "", texto)
sin_espacios
## [1] "¡QUERÁPIDOPASAELTIEMPO!\nDeverdadnopuedocreerqueapenasunosinstantesatrásestabaviajandoeneseyalejano9deenerodeGuadalajara,México,aLima,Perú.\nHanpasado5mesesotesdondehetenidoelgusto,orgulloyhonordeformarpartedelTour1y2DPCSA,LimaMajor,DreamleagueS19yBerlinMajor.Creoquenoteníaunañotanactivodesdeel2017lol.\nMuchísimasgraciasaESB-ElectronicSportsBroadcastingy4DEsportsporpermitirmeseguirformandopartedeestahermosaescenaenlosdistintoseventosquehantranscurridoenelaño;elpodertrabajarendistintosmomentosyproyectosparaambasproductorasmellenadeorgulloyalegría.Sigansiendocracks,cadaquienasumodotanúnicodetransmitirytraerelDota2alosfans.\nQuieroaclararquemiscomentariossobreelpagopendientedelaLimaMajorquehiceenstreameranentotalplandejoda,dememeychacota.Peroenretrospectivamesaliómuybajitalabromaypidodisculpaspúblicasporlasmolestiascausadasdemipartealosafectados.\nAvo+NOMEDEBENADAAMIDEFORMAPERSONAL.\nNOMEDEBENADA.\nYADEJENDEJODERLO,PORFAVOOOOORXD\nYaestoyenconversacionespararecibirlaremuneraciónydenuevolorepito,Avonotienenadaqueverconesepago,soloqueríamolestarloporqueensumomentoélfuemicontactoprincipalparatrabajarenelstreameninglésdelaLimaMajor,peroobviamenteustedesnoteníanesecontexto,asíquemipésimochistesesaliódecontrol.(ptmhastadijeGAHparahacernotarquenoeraenserioperonofuesuficiente:'u)\nViveyaprende,lol.\nEsoseríatodoporahora,siaúnnomedespidendeESB,entoncesnosvemosmuymuyprontoparacerrarelTour3SADPCylaBaliMajordecaraalTI2023.\nPorúltimo,quierodeverdadagradeceratodosycadaunodelosquesiempreestánapoyandoymandandolabuenavibraenlosstreams.Nosabenlomuchoquesignificaparamíqueapesardelosañosymispifiaseinconsistenciastodavíahayagentebellayhermosaquemandasuapoyoyenergíapositivaamipersona.GRACIASGRACIASGRACIAS🙏\nTodoslosdíasintentodarleslamejorversiónposibledemíenstream.Avecesselogra,avecesnoJAJA,peroapreciomuchoatodoslosquesetomanunpocodesuvaliosotiempoparaseguirapoyandoelsueñodeesteviejoylocomexicanoqueamaelDotatantocomoloamanenestepreciosopaís❤️\n¡Cuídensemucholocos,nosvemospronto!\nATTE.CARLOS\"THEAZATHOTH\"RIOS,MEJORCONOCIDOENELBAJOMUNDOCOMOSarcasmoGamerKTMREKBAPASAR\n(porsinolocaptaron,esoúltimoesbromaXDDD)"
longitud <- nchar(texto)
longitud
## [1] 2575

Acceder a los elementos de la lista

En R, al igual que en Python, las listas son una estructura de datos que admite la indexación, comenzando desde 1 en lugar de 0 como en Python. También se puede acceder a los elementos de una lista utilizando índices negativos, donde -1 se refiere al último elemento de la lista, -2 al penúltimo y así sucesivamente.

Acceso por índice positivo

Para acceder a un elemento específico de una lista en R, simplemente proporciona el índice del elemento entre corchetes, como se muestra a continuación:

# Crear una lista
mi_lista <- list("manzana", "banana", "cereza", "dátiles")

# Acceder al primer elemento
primer_elemento <- mi_lista[1]
print(primer_elemento) # Imprime "manzana"
## [[1]]
## [1] "manzana"
# Acceder a varios elementos
elementos_seleccionados <- mi_lista[c(2, 4)]
print(elementos_seleccionados) # Imprime "banana" y "dátiles"
## [[1]]
## [1] "banana"
## 
## [[2]]
## [1] "dátiles"
# Acceder al último elemento
ultimo_elemento <- mi_lista[-length(mi_lista)]
print(ultimo_elemento) # Imprime "dátiles"
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "banana"
## 
## [[3]]
## [1] "cereza"

Agregar elemento(s) a la lista

En R, puedes agregar elementos a una lista utilizando varias funciones y técnicas. A continuación, se muestran algunas de las formas más comunes de hacerlo.

Usar la función c()

La forma más sencilla de agregar elementos a una lista en R es utilizando la función c(), que combina elementos en un nuevo vector o lista. Puedes usar esta función para agregar uno o más elementos al final de una lista existente. Aquí hay un ejemplo:

Agregar elemento(s) a la lista

En R, puedes agregar elementos a una lista utilizando varias funciones y técnicas. A continuación, se muestran algunas de las formas más comunes de hacerlo.

Usar la función c()

La forma más sencilla de agregar elementos a una lista en R es utilizando la función c(), que combina elementos en un nuevo vector o lista. Puedes usar esta función para agregar uno o más elementos al final de una lista existente. Aquí hay un ejemplo:

# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Agregar un elemento al final de la lista
mi_lista <- c(mi_lista, "dátiles")
print(mi_lista) # Imprime la lista actualizada

Ejemplo:

# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Agregar un elemento al final de la lista
mi_lista <- append(mi_lista, "dátiles")
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "banana"
## 
## [[3]]
## [1] "cereza"
## 
## [[4]]
## [1] "dátiles"
# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Agregar un elemento en una posición específica
mi_lista[[4]] <- "dátiles"
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "banana"
## 
## [[3]]
## [1] "cereza"
## 
## [[4]]
## [1] "dátiles"

Actualizar elementos en una lista

En R, puedes actualizar elementos específicos en una lista utilizando la indexación. A continuación, te mostraré cómo hacerlo.

Usar la indexación

Para actualizar un elemento en una lista, simplemente utiliza la indexación para acceder al elemento que deseas cambiar y asigna un nuevo valor a ese elemento. Aquí tienes un ejemplo:

# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Actualizar el segundo elemento de la lista
mi_lista[2] <- "naranja"
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "naranja"
## 
## [[3]]
## [1] "cereza"

Ejemplo:

# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Actualizar el segundo elemento de la lista usando doble corchete
mi_lista[[2]] <- "naranja"
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "naranja"
## 
## [[3]]
## [1] "cereza"

Eliminar elementos de una lista en R

En R, puedes eliminar elementos específicos de una lista utilizando diferentes métodos. A continuación, te mostraré cómo hacerlo.

Usar la indexación negativa

Una forma común de eliminar elementos de una lista es utilizando la indexación negativa. Esto significa que indicas qué elementos deseas conservar en lugar de los que deseas eliminar. Aquí tienes un ejemplo:

# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Eliminar el segundo elemento de la lista usando indexación negativa
mi_lista <- mi_lista[-2]
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "cereza"

Ejemplo:

# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Eliminar elementos que cumplan una condición
mi_lista <- subset(mi_lista, mi_lista != "banana")
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "cereza"
# Crear una lista inicial
mi_lista <- list("manzana", "banana", "cereza")

# Crear una nueva lista excluyendo elementos
mi_lista <- list(mi_lista[[1]], mi_lista[[3]])
print(mi_lista) # Imprime la lista actualizada
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "cereza"

Comprobar la pertenencia de un elemento en una lista en R

En R, puedes verificar si un elemento está presente en una lista utilizando la función %in% o el operador %in%. Esto te permite comprobar si un valor específico existe en la lista o no.

Usar la función %in%

La función %in% es útil para comprobar si un valor está presente en una lista y devuelve un valor lógico (TRUE o FALSE). Aquí tienes un ejemplo:

# Crear una lista
mi_lista <- list("manzana", "banana", "cereza")

# Verificar si "banana" está en la lista
esta_presente <- "banana" %in% mi_lista
print(esta_presente) # Imprime TRUE si está presente, FALSE si no lo está
## [1] TRUE

Ejemplo: Usar el operador %in%

# Crear una lista
mi_lista <- list("manzana", "banana", "cereza")

# Verificar si "banana" está en la lista
esta_presente <- "banana" %in% mi_lista
print(esta_presente) # Imprime TRUE si está presente, FALSE si no lo está
## [1] TRUE

Longitud de una lista y recuento de un elemento en la lista en R

En R, puedes obtener la longitud de una lista utilizando la función length() y contar cuántas veces aparece un elemento en una lista usando la función sum() en combinación con sapply().

Obtener la longitud de una lista

Para obtener la longitud de una lista en R, puedes utilizar la función length(). Aquí tienes un ejemplo:

# Crear una lista
mi_lista <- list("manzana", "banana", "cereza")

# Obtener la longitud de la lista
longitud <- length(mi_lista)
print(longitud) # Imprime la longitud de la lista
## [1] 3

Contar la aparición de un elemento en una lista

# Crear una lista
mi_lista <- list("manzana", "banana", "cereza", "banana", "manzana")

# Contar cuántas veces aparece "banana" en la lista
conteo <- sum(sapply(mi_lista, function(x) x == "banana"))
print(conteo) # Imprime el número de veces que "banana" aparece en la lista
## [1] 2

Corte de lista en R

En R, puedes realizar cortes o divisiones en una lista utilizando la notación de corchetes []. Esto te permite obtener un subconjunto de una lista o una porción de una lista basada en la indexación.

Sintaxis de corte de lista

Ejemplos de corte de lista. 


```r
# Crear una lista
mi_lista <- list("manzana", "banana", "cereza", "naranja", "uva")

# Obtener un subconjunto de la lista desde el índice 2 hasta el índice 4
sub_lista <- mi_lista[2:4]
print(sub_lista)
## [[1]]
## [1] "banana"
## 
## [[2]]
## [1] "cereza"
## 
## [[3]]
## [1] "naranja"
# Obtener los primeros 3 elementos de la lista
primeros_elementos <- mi_lista[1:3]
print(primeros_elementos)
## [[1]]
## [1] "manzana"
## 
## [[2]]
## [1] "banana"
## 
## [[3]]
## [1] "cereza"
# Obtener un solo elemento de la lista (índice 5)
elemento <- mi_lista[5]
print(elemento)
## [[1]]
## [1] "uva"

  1. 0-9↩︎

  2. 0-9↩︎

  3. A-Za-z↩︎

  4. a-z↩︎

  5. A-Z↩︎

  6. A-Za-z0-9↩︎