Saltar al contenido

function (), lapply (), sapply (), tapply () Función en R con ejemplos

Este tutorial tiene como objetivo aplicar la colección function (). La función de la aplicación () es la colección más básica de todas. También aprenderemos sapply (), lapply () y tapply (). La colección de aplicaciones se puede ver como una alternativa al bucle.

La colección application () se incluye con r necesario paquete si instala R con Anaconda. La función de aplicación () se puede alimentar con muchas funciones a la función redundante de la colección de objetos (marco de datos, lista, vector, etc.). El propósito de application () es principalmente evitar usos explícitos de bucles. Se pueden utilizar para la implementación de funciones, matrices o listas de entrada. Se puede aplicar cualquier función ().

En este tutorial, aprenderá

función () función

Aplicar () toma un marco de datos o una matriz como entrada y salidas en vector, lista o matriz. function () La función se usa principalmente para evitar usos explícitos de bucles. Es la colección más básica de todas las que se puede utilizar sobre una matriz.

Hay 3 argumentos para esta función:

apply(X, MARGIN, FUN)
Here:
-x: an array or matrix
-MARGIN:  take a value or range between 1 and 2 to define where to apply the function:
-MARGIN=1`: the manipulation is performed on rows
-MARGIN=2`: the manipulation is performed on columns
-MARGIN=c(1,2)` the manipulation is performed on rows and columns
-FUN: tells which function to apply. Built functions like mean, median, sum, min, max and even user-defined functions can be applied>

El ejemplo más simple es agregar una matriz sobre todas las columnas. El código aplicado (m1, 2, suma) aplicará la función de suma a la matriz de 5×6 y devolverá la suma de todas las columnas accesibles en el conjunto de datos.


m1 <- matrix(C<-(1:10),nrow=5, ncol=6)
m1
a_m1 <- apply(m1, 2, sum)
a_m1

Producción:

Práctica recomendada: almacene los valores antes de imprimir en la consola.

función lapply ()

lapply () la función es útil para realizar operaciones en objetos de lista y devuelve un objeto de lista de la misma longitud que el conjunto original. lappy () devuelve una lista de la misma longitud que un objeto de lista de entrada, cada elemento resulta en una diversión aplicada al elemento correspondiente de la lista. lapply () toma una lista, vector o marco de datos como entrada y genera la lista.


lapply(X, FUN)
Arguments:
-X: A vector or an object
-FUN: Function applied to each element of x	

L en lapply () significa lista. La diferencia entre lapply () y function () está entre el resultado de salida. La salida lapply () es una lista. lapply () se puede usar para otras cosas como marcos y listas de datos.

La función lapply no necesita MARGIN ().

Un ejemplo muy sencillo es cambiar el valor de un cable de matriz a una minúscula con una función más ajustada. Construimos una matriz con el nombre de la famosa película. El nombre está en formato de mayúsculas.


movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN")
movies_lower <-lapply(movies, tolower)
str(movies_lower)

Producción:


## List of 4
## $:chr"spyderman"
## $:chr"batman"
## $:chr"vertigo"
## $:chr"chinatown"

Podemos usar list () para convertir la lista en un vector.


movies_lower <-unlist(lapply(movies,tolower))
str(movies_lower)

Producción:

##  chr [1:4] "spyderman" "batman" "vertigo" "chinatown"

función de aplicación ()

sapply () la función toma una lista, vector o marco de datos como entrada y da salida en el vector o matriz. Es útil para operaciones en objetos de lista y devuelve un objeto de lista de la misma longitud que el conjunto original. una función sapply () hace el mismo trabajo que una función lapply () pero devuelve un vector.

sapply(X, FUN)
Arguments:
-X: A vector or an object
-FUN: Function applied to each element of x

Podemos medir la velocidad mínima y las distancias de frenado de los automóviles desde el conjunto de datos del automóvil.


dt <- cars
lmn_cars <- lapply(dt, min)
smn_cars <- sapply(dt, min)
lmn_cars

Producción:

## $speed
## [1] 4
## $dist
## [1] 2
smn_cars

Producción:

## speed  dist 
##     4     2
lmxcars <- lapply(dt, max)
smxcars <- sapply(dt, max)
lmxcars

Producción:

## $speed
## [1] 25
## $dist
## [1] 120
smxcars

Producción:

## speed  dist 
##    25   120

Podemos usar una función incorporada por el usuario lapply () o sapply (). Creamos una función llamada avg para calcular el vector mínimo y máximo promedio.

avg <- function(x) {  
  ( min(x) + max(x) ) / 2}
fcars <- sapply(dt, avg)
fcars

Producción

## speed  dist
##  14.5  61.0

la función sapply () es más eficiente que lapply () en la salida devuelta porque los valores sapply () insertan direclty en un vector. En el siguiente ejemplo, veremos que no siempre es así.

Podemos resumir la diferencia entre function (), sapply () y `lapply () en la siguiente tabla:

Función

Argumentos

Propósito

Aporte

Producción

solicitar

aplicar (x, MARGIN, FUN)

Aplicar a las filas o columnas o ambas

Marco de datos o matriz

vector, lista, matriz

lapear

lapply (X, FUN)

Aplicar a todos los aspectos de la entrada

Lista, vector o marco de datos

lista

sapply

cursi (X divertido)

Aplicar a todos los aspectos de la entrada

Lista, vector o marco de datos

vector o matriz

Vector de rebanada

Podemos usar lapply () o sapply () intercambiables para cortar un marco de datos. Creamos una función, below_average (), que toma un vector de valores numéricos y devuelve un vector que contiene solo los valores que están justo por encima de la media. Comparamos los dos resultados con la función igual ().

below_ave <- function(x) {  
    ave <- mean(x) 
    return(x[x > ave])
}
dt_s<- sapply(dt, below_ave)
dt_l<- lapply(dt, below_ave)
identical(dt_s, dt_l)

Producción:

## [1] TRUE

función de tapply ()

tapply () se calcula un byte (media, mediana, mínimo, máximo, etc.) o función para cada variable de factor en un vector. Es una función muy útil que le permite crear un subconjunto de un vector y luego aplicar varias funciones a cada uno de los subconjuntos.

tapply(X, INDEX, FUN = NULL)
Arguments:
-X: An object, usually a vector
-INDEX: A list containing factor
-FUN: Function applied to each element of x

Resumir las variables es parte del trabajo de un científico o investigador de datos. Por ejemplo, mida la media o los datos de grupo según la característica. La mayoría de los datos están agrupados por ID, ciudad, países, etc. Cuando se resume un grupo, se revelan patrones más interesantes.

Para comprender cómo funciona, utilicemos el conjunto de datos del diario. Este conjunto de datos es muy popular en el mundo del aprendizaje automático. El objetivo de este conjunto de datos es predecir la clasificación de cada una de las tres especies de flores: Sepal, Versicolor, Virginica. El conjunto de datos recopila información para cada especie sobre su largo y ancho.

Como preludio, podemos calcular la mediana de la longitud para cada especie. tapply () es una forma rápida de hacer este cálculo.

data(iris)
tapply(iris$Sepal.Width, iris$Species, median)

Producción:

##     setosa versicolor  virginica 
##        3.4        2.8        3.0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *