Aplicar la función a cada valor en el marco de datos R

En el lenguaje de programación R para aplicar una función a cada valor de tipo entero en un marco de datos, podemos usar la función lapply del paquete dplyr . Y si el tipo de datos de los valores es una string, podemos usar paste() con lapply. Entendamos el problema con la ayuda de un ejemplo.

Conjunto de datos en uso:

  A B C D
1. 1 8 21 4
2. 9 2 0 6
3. 6 3 14 3
4. 5 6 5 7
5. 9 4 3 1
6. 6 3 2 3

después de aplicar value*7+1 a cada valor del marco de datos

Resultado Esperado:

  A B C D
1. 8 57 148 29
2. 64 15 1 43
3. 43 22 99 22
4. 36 43 36 50
5. 64 29 22 8
6. 43 22 15 22

Método 1: Usando la función lapply:

lapply es una función de la familia apply. Al usar lapply, podemos evitar for loop ya que for loop es más lento que lapply. lapply funciona más rápido que un bucle normal porque no interfiere con el entorno en el que trabaja. Devuelve la salida como una lista. ‘l’ en lapply indica lista.

Sintaxis:

lapply(X, DIVERSIÓN, …)

Aquí, X puede ser una lista de vectores o un marco de datos. Y FUN toma una función que desea aplicar al marco de datos como argumento.

Acercarse:

  • Cree un conjunto de datos ficticio.
  • Cree una función personalizada que desee aplicar a cada valor en el marco de datos.
  • Aplique esta función personalizada a cada valor en el marco de datos con la ayuda de lapply.
  • Mostrar resultado

Ejemplo

R

# Apply function to every value in dataframe
  
# Creating dataset 
m <- c(1,9,6,5,9,6)
  
n <- c(8,2,3,6,4,3)
  
o <- c(21,0,14,5,3,2)
  
p <- c(4,6,3,7,1,3)
  
# creating dataframe
df <- data.frame(A=m,B=n,C=o,D=p)
  
# creating function
# that will multiply 
# each value by 7 and then add 1
magic_fun <- function(x){
  return (x*7+1)}
  
# applying the custom function to every value and converting 
# it to dataframe, as lapply returns result in list 
# we have to convert it to data frame
data.frame(lapply(df,magic_fun))

Producción :

usando la aplicación

Método 2: Usar la función de pegar y aplicar:

paste() toma un objeto R como argumento y lo convierte en caracteres, luego lo vuelve a pegar con otra string, es decir, convierte el argumento en la string de caracteres y los concatena.

Sintaxis:

pegar (…, sep = ” “)

Nuestro objeto R que se va a convertir en string va en lugar de “…”,  sep=” “  representa una string de caracteres para separar los términos.

Acercarse:

  • Cree un conjunto de datos ficticio.
  • Aplique la función personalizada que imprimirá «Hola», luego valor en el valor del marco de datos
  • Mostrar resultado

Ejemplo:

R

# Apply function to every value in dataframe
  
# Creating dataset 
m <- c("Vikas","Varun","Deepak")
  
n <- c("Komal","Suneha","Priya")
  
# creating dataframe
df <- data.frame(A=m,B=n)
  
# Applying custom function to every element in dataframe
df[]<-data.frame(lapply(df,function(x) paste("Hello,",x,sep="")))
  
# display dataset
df

Producción:

Usar pegar y aplicar

Método 3: Usar ronroneo

purrr es un conjunto de herramientas de programación funcional. Que viene con muchas funciones útiles, como un mapa. La función map() recorre todas las entradas del vector y devuelve el resultado como una lista . Nos permite reemplazar for loop con en el código y lo hace más fácil de leer.

Sintaxis:

 map(.x, .f) devuelve una lista

 map_df(.x, .f) devuelve un marco de datos

 map_dbl(.x, .f) devuelve un vector numérico (doble)

 map_chr(.x, .f) devuelve un vector de caracteres

 map_lgl(.x, .f) devuelve un vector lógico

Aquí, .x es la entrada y .f es una función que desea aplicar. La entrada a la función de mapa puede ser una lista, un vector o un marco de datos.

Nota: debe instalar el paquete purrr explícitamente con el siguiente comando. 

install.packages(“purrr”)

Acercarse :

  • Crear un vector, una lista y un marco de datos
  • Cree una función personalizada que desee aplicar.
  • Use map() para aplicar funciones personalizadas en vectores, listas y marcos de datos.
  • Mostrar resultado

Trabajando con tipos de datos enteros:

Programa:

R

# Apply function to every value in dataframe
  
# install and load the purrr
install.packages("purrr")
library("purrr")
  
# Creating a vector
x <- c(1,2,3,4,5,7,8,9)
  
# creating list
y <- list(2,4,9,6,3,7,1,5,4)
  
# creating dataframe
df <- data.frame(A=c(1,2,3,4,5),B=c(6,7,8,9,10))
  
# creating custom function
custom_f <- function(x){
  return(x*2)
}
  
# applying function to vector
# and return output as vector
map_dbl(x,.f=custom_f)
  
# applying function to list
# and return output as vector
map(y,.f=custom_f)
  
# applying function to dataframe
# and return output as dataframe
map_df(df,.f=custom_f)

Producción: 

Para un vector:

Salida vectorial

Para una lista:

Salida de lista

Para un marco de datos:

salida del marco de datos

Trabajando con el tipo de datos de caracteres:

Programa:

R

# Apply function to every value in dataframe
  
#install and load the purrr
#install.packages("purrr")
library("purrr")
  
# Creating a vector
x <- c("Red","Blue", "Green","Yellow","Orange")
  
# creating list
y <- list("spring","summer", "fall","winter")
  
# creating dataframe
df <- data.frame(Working_days=c("Mon","Tues","Wednes"),
                  off_days=c("Sun","Satur","Thurs") )               
  
# applying function to vector
# and return output as vector
map_chr(x,paste0," color")
  
# applying function to list
# and return output as vector
map(y,paste0," season")
  
# applying function to dataframe
# and return output as dataframe
map_df(df,paste0,"day")

Producción:

Para un vector:

Vector como salida

Para una lista:

Listar como salida

Para un marco de datos:

Marco de datos como salida

Publicación traducida automáticamente

Artículo escrito por arpit122000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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