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: 25
Funcions 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: 11
Exercici 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