我有三个data.frame对象需要同时按给定的阈值过滤掉。我想过滤掉所有data.frame对象的阈值。任何人都可以给我一些可能的想法来完成这项任务吗?
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))
过滤掉给定的阈值:
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)
})
如果这种方法可以发生,我将把每个data.frame对象的过滤输出组作为列表。
我认为可能有更好的方法来做到这一点。关于我提出的问题,完成这项任务的更好方法是什么?任何人都可以指出我可能解决这个问题的方法吗?提前谢谢。
答案 0 :(得分:2)
你可以尝试:
lst <- list(df1, df2, df3)
library(dplyr)
lapply(lst, function(x) { filter(x, score <= 12) })
或者@akrun在基地R
中提到:
lapply(lst, function(x) { subset(x, score <= 12) })