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 :
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:
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:
Para una lista:
Para un 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:
Para una lista:
Para un marco de datos:
Publicación traducida automáticamente
Artículo escrito por arpit122000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA