【发布时间】:2017-11-30 12:47:28
【问题描述】:
正如?lapply 所说:
lapply 返回一个与 X 长度相同的列表,其中每个元素 是对X的对应元素应用FUN的结果。
是否仍然可以返回长度小于 X 的列表?
代码
l <- lapply(1:10,function(u)ifelse(u<5,return(u),return(NULL)))
我可以在 return(NULL) 部分放置一些东西以完全删除/省略元素吗?
所需的输出
代码部分的输出应与以下内容相同:
l[!sapply(l,is.null)]
4 个列表,只有小于 5 的元素!
【问题讨论】:
-
可以从tidyverse中查看
purrr包,特别是compact函数 -
你引用的描述不是很清楚地回答了你的问题吗?
-
lapply将始终返回与输入长度相同的结果,但您可以使用Filter(Negate(is.null), lapply(...))返回非空结果。 -
你也可以
Filter(length, lapply(1:10,function(u)ifelse(u<5,return(u),return(NULL)))) -
投票结束,因为问题不是“如何在 lapply 之后删除 NULL?” (那么这是重复的)但是“是否可以从输入长度 within lapply 返回较小长度的输出?” (来自手册:它说不)