Dominio de Funciones y Bucles en R: Ejemplos Prácticos
Enviado por Chuletator online y clasificado en Matemáticas
Escrito el en
español con un tamaño de 3,12 KB
Manipulación de Datos con dplyr
Para realizar operaciones de agrupación y resumen, utiliza la siguiente estructura:
“Calcula... para cada / por cada / según el [Grupo]” o “Obtén la media/total de forma desagregada por [Grupo]”.
Resultado <- Dataset %>%
group_by(Columna_De_Los_Grupos) %>%
summarize(Titulo = funcion_matematica(Variable, na.rm = TRUE))Para crear nuevas columnas basadas en condiciones:
“Crea una nueva columna llamada [X] que clasifique / etiquete / asigne un valor dependiendo de...” o “Calcula una nueva variable basada en una condición...”.
Resultado <- Dataset %>%
mutate(Nombre_Nueva_Columna = if_else(Condición_A_Cumplir, "Lo que se escribe si CUMPLE", "Lo que se escribe si NO cumple"))Uso de Bucles y Funciones Personalizadas
1. Iteración con for y cat()
Si necesitas calcular valores mediante un bucle y mostrar resultados formateados:
titulo <- function(x, y) {
for (tasa in tasas) {
# Aplicar la fórmula matemática
titulo <- formula
# Transformar la tasa a porcentaje
Tasa_porcentaje <- lo_que_quieres_transformar * 100
# Mostrar el mensaje personalizado
cat("Con una tasa del", tasa_porcentaje, "%, el valor final es:", titulo, "euros\n")
}
}2. Cálculo de Rango (rng)
Función para obtener la diferencia entre los valores máximo y mínimo de un vector:
rng <- function(x) {
ret <- max(x) - min(x)
return(ret)
}
# Aplicación
rng(datos_incorporados$laquesea)3. Clasificación con ifelse
Creación de un vector aleatorio y categorización:
Variables <- runif(30)
ifelse(Variables < 0.2, 'pequeño', 'grande')4. Simulación de Batería con while
Función para simular el incremento de carga hasta un objetivo:
bateria <- function(nivel_inicial, nivel_objetivo) {
nivel_actual <- nivel_inicial
while(nivel_actual < nivel_objetivo) {
nivel_actual <- nivel_actual + 10
print(nivel_actual)
}
if(nivel_actual >= nivel_objetivo) {
break
}
}
bateria(20, 60)5. Conteo Condicional en mtcars
Uso de un bucle while para recorrer filas y contar vehículos con más de 100 HP:
data(mtcars)
i <- 1
contador_coches <- 0
total_filas <- nrow(mtcars)
while (i <= total_filas) {
if (mtcars$hp[i] > 100) {
contador_coches <- contador_coches + 1
}
i <- i + 1
}
print(paste("El número de coches con más de 100 HP es:", contador_coches))6. Diferencias Consecutivas
Cálculo de la diferencia entre elementos sucesivos de un vector:
diferencias.consecutivas <- function(v) {
if (length(v) < 2) {
return(numeric(0))
}
n <- length(v)
resultado <- v[2:n] - v[1:(n-1)]
return(resultado)
}
# Aplicación
v <- c(3, 5, 10, 17, 19, 32)
diferencias.consecutivas(v)