La programació funcional és un paradigma de programació que tracta el càlcul com l'avaluació de funcions matemàtiques i evita canvis d'estat i dades mutables. En R, aquest paradigma és molt útil per escriure codi més net, modular i fàcil de mantenir. En aquesta secció, explorarem els conceptes clau de la programació funcional en R, incloent-hi funcions d'ordre superior, aplicació de funcions i funcions anònimes.
Conceptes Clau
Funcions d'Ordre Superior
Les funcions d'ordre superior són funcions que poden prendre altres funcions com a arguments o retornar funcions com a resultats. Aquestes funcions són fonamentals en la programació funcional.
Exemple:
# Definim una funció que pren una altra funció com a argument
apply_function <- function(f, x) {
return(f(x))
}
# Definim una funció simple
square <- function(x) {
return(x^2)
}
# Apliquem la funció 'square' a un valor
result <- apply_function(square, 5)
print(result) # Output: 25Funcions Anònimes
Les funcions anònimes (o lambda) són funcions que es defineixen sense nom. Són útils per a operacions ràpides i senzilles que no necessiten una definició formal.
Exemple:
# Utilitzem una funció anònima per elevar al quadrat un número result <- apply_function(function(x) x^2, 5) print(result) # Output: 25
Funcions d'Aplicació
Les funcions d'aplicació permeten aplicar una funció a cada element d'una estructura de dades, com ara un vector o una llista. Les funcions lapply, sapply, vapply i mapply són exemples comuns en R.
Exemple:
# Definim un vector numbers <- c(1, 2, 3, 4, 5) # Apliquem una funció anònima a cada element del vector utilitzant 'lapply' squared_numbers <- lapply(numbers, function(x) x^2) print(squared_numbers) # Output: list(1, 4, 9, 16, 25) # Utilitzem 'sapply' per obtenir un vector en lloc d'una llista squared_numbers <- sapply(numbers, function(x) x^2) print(squared_numbers) # Output: c(1, 4, 9, 16, 25)
Exercicis Pràctics
Exercici 1: Funcions d'Ordre Superior
Escriu una funció apply_twice que prengui una funció f i un valor x, i apliqui f a x dues vegades.
Solució:
apply_twice <- function(f, x) {
return(f(f(x)))
}
# Prova la funció amb una funció anònima
result <- apply_twice(function(x) x + 3, 5)
print(result) # Output: 11Exercici 2: Funcions Anònimes
Utilitza una funció anònima per crear una llista de valors al quadrat d'un vector de números.
Solució:
numbers <- c(1, 2, 3, 4, 5) squared_numbers <- lapply(numbers, function(x) x^2) print(squared_numbers) # Output: list(1, 4, 9, 16, 25)
Exercici 3: Funcions d'Aplicació
Utilitza sapply per calcular el factorial de cada número en un vector.
Solució:
factorial_vector <- function(x) {
if (x == 0) return(1)
return(x * factorial_vector(x - 1))
}
numbers <- c(1, 2, 3, 4, 5)
factorials <- sapply(numbers, factorial_vector)
print(factorials) # Output: c(1, 2, 6, 24, 120)Resum
En aquesta secció, hem explorat els conceptes bàsics de la programació funcional en R, incloent-hi funcions d'ordre superior, funcions anònimes i funcions d'aplicació. Hem vist com aquestes tècniques poden ajudar a escriure codi més modular i mantenible. A mesura que avancem en el curs, aquests conceptes seran fonamentals per a la manipulació i l'anàlisi de dades de manera eficient.
Programació en R: De Principiant a Avançat
Mòdul 1: Introducció a R
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres
