如何按行数筛选嵌套的数据帧列表,并从R中的列表中删除筛选的数据帧?

如何按行数筛选嵌套的数据帧列表,并从R中的列表中删除筛选的数据帧?,r,list,filter,nested,rows,R,List,Filter,Nested,Rows,这应该是一个简单的问题来解决,但我无法得到确切的输出我想。我有一个嵌套的数据帧列表,我想过滤掉所有少于50行的数据帧,并将它们从列表中删除 这是我尝试过的一个可复制的例子- L <- list(iris,mtcars,iris) O <- list(iris,mtcars,iris) H <- list(iris,mtcars,iris) List <- list(L,O,H) test <- lapply(List, function(x) lapply(x

这应该是一个简单的问题来解决,但我无法得到确切的输出我想。我有一个嵌套的数据帧列表,我想过滤掉所有少于50行的数据帧,并将它们从列表中删除

这是我尝试过的一个可复制的例子-

L <- list(iris,mtcars,iris)
O <- list(iris,mtcars,iris)
H <- list(iris,mtcars,iris)
  List <- list(L,O,H)

test <- lapply(List, function(x) lapply(x, function(x) if (nrow(x)<50) NULL else x)))
L一个选项可以是:

lapply(List, function(x) Filter(function(y) nrow(y) >= 50, x))

使用
purrr
库:

List %>% map(~keep(.x, ~nrow(.x) >= 50))

这里有一个带有
sapply/lappy

lapply(List, function(x) x[sapply(x, nrow)>=50])

这就成功了!我知道我已经很接近了——但是看来把F大写和使用y是完全不同的,谢谢——我学到了一些新的东西@Brewkeeper Base R
Filter
与您在本网站上经常看到且经常被忽略的
dplyr::Filter
非常不同。谢谢您-了解它们显然非常有价值@不要对你的答案提出批评,只是想知道一些事情,这样你就不必再打电话给图书馆了。
List %>% map(~keep(.x, ~nrow(.x) >= 50))
lapply(List, function(x) x[sapply(x, nrow)>=50])