Home > Back-end >  Select only numeric columns from dataframes in a list
Select only numeric columns from dataframes in a list

Time:09-26

I have this list of dataframes as follows :

library(carData)
library(datasets)
l = list(Salaries,iris)

I only want to select the numeric columns in this list of datasets. Already tried lapply with the function select_if(is.numeric) but it did not work with me.

CodePudding user response:

We can use select with where in the newer version of dplyr - loop over the list with map and select the columns of the data.frames

library(purrr)
library(dplyr)
map(l, ~ .x %>%
    select(where(is.numeric)))

Or using base R

lapply(l, Filter, f = is.numeric)

CodePudding user response:

base R option using lapply twice like this:

library(carData)
library(datasets)

l = list(Salaries,iris)
lapply(l, \(x) x[, unlist(lapply(x, is.numeric), use.names = FALSE)])
#> [[1]]
#>     yrs.since.phd yrs.service salary
#> 1              19          18 139750
#> 2              20          16 173200
#> 3               4           3  79750
#> 4              45          39 115000
#> 5              40          41 141500
#> 
#> [[2]]
#>     Sepal.Length Sepal.Width Petal.Length Petal.Width
#> 1            5.1         3.5          1.4         0.2
#> 2            4.9         3.0          1.4         0.2
#> 3            4.7         3.2          1.3         0.2
#> 4            4.6         3.1          1.5         0.2
#> 5            5.0         3.6          1.4         0.2

Created on 2022-09-25 with reprex v2.0.2

  • Related