Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove list elements with less than "x" rows

I have a list that looks like this, but has thousand entries.

a=mtcars[1:5,]
b=mtcars[1:10,]
c=mtcars[1:7,]
my_list <- list(a, b, c)

I would like to delete all list objects that have less than 7 rows. The desired output will be to remain to "b" and "c" in my list. Importantly I would like to incorporate this function in my dplyr pipeline

I am looking forward to your ideas

like image 859
LDT Avatar asked Apr 28 '26 11:04

LDT


2 Answers

very simple and straight forward method

my_list[sapply(my_list, nrow) >= 7]
like image 74
Oliver Avatar answered May 01 '26 01:05

Oliver


Another option using keep:

library(tidyverse)
keep(my_list, ~all(nrow(.x) >= 7))
# [[1]]
#                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
# Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
# Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
# Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
# Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

# [[2]]
#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# Duster 360        14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
like image 38
user63230 Avatar answered May 01 '26 01:05

user63230



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!