我有以下清单:
df1 <- data.frame(a = rnorm(20), b = 010037)
df2 <- data.frame(a = rnorm(20), b = 010038)
df3 <- data.frame(a = rnorm(20), b = 010039)
df4 <- data.frame(a = rnorm(20), b = 010040)
ls <- list(df1, df2, df3, df4)
我的目标是根据column中的值删除选定的数据帧b
。
unwanted <- c(010037, 010038)
sapply(ls, "[", "b") %in% unwanted
这样,df1
并df2
会从被丢弃ls
,但我与它没有运气。请帮忙?
一种选择是进入subset
数据集,然后Filter
out <- Filter(nrow, lapply(ls, subset, subset = !b %in% unwanted))
length(out)
#[1] 2
或搭配 discard
library(purrr)
map_lgl(ls, ~ all(.x$b %in% unwanted)) %>%
discard(ls, .)
或bind_rows
与group_split
library(dplyr)
bind_rows(ls) %>%
filter(!b %in% unwanted) %>%
group_split(b)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句