r - Filtering out multiple data.frame objects by given threshold simultaneously -


i have 3 data.frame objects needs filter out given threshold value simultaneously. want filter them out given threshold value data.frame objects. can give me possible idea accomplish task?

simulated data:

df1 <- data.frame(   start=seq(1, by=9, len=18), end=seq(6, by=9, len=18),   id=letters[seq(1:18)], score=sample(1:25, 18, replace = false))  df2 <- data.frame(   start=seq(2, by=11, len=20), end=seq(8, by=11, len=20),   id=letters[seq(1:20)], score=sample(1:25, 20, replace = false))  df3 <- data.frame(   start=seq(4, by=11, len=25), end=seq(9, by=11, len=25),   id=letters[seq(1:25)], score=sample(1:25, 25, replace = false)) 

my attempt solution follows:

filtering out given threshold:

df.li <- list(df1, df2, df3) keep <- obj$score <= 12  test <- lapply(df.li, function(ele_) {   keep <- ele_$score <= 12   discard <- ele_[!keep]   res <- data.frame(kee=keep,                     dis=discard)   return(res) }) 

my desired output:

if approach can happen, going group of filtering output each data.frame object list.

i think there might better way this. regarding question raised, what's better approach accomplish task? can point me out possible way solve issue? in advance.

you try:

lst <- list(df1, df2, df3)  library(dplyr) lapply(lst, function(x) { filter(x, score <= 12) }) 

or per mentionned @akrun, in base r:

lapply(lst, function(x) { subset(x, score <= 12) }) 

Comments