当函数没有return()
时,有没有一种方法可以阻止lapply()
为列表中的每个元素返回空值。
这里有一个非常基本的例子:
x <- function(x) {
return(NULL) }
a.list <- list(a=1,b=2,c=3)
lapply(a.list, x)
输出为:
$a
NULL
$b
NULL
$c
NULL
我的目标是根本没有这样的输出。
更新:我的用例如下。我使用lapply()
输出xtable()
文本,并将其sink()
到一个Rnw文件中,所以这个空输出会影响我的自动化。
发布于 2012-01-30 12:50:28
脑海中浮现两个选项:
任一
trash_can <- lapply(a.list, x)
或
invisible(lapply(a.list, x))
第一个问题让我想知道在R
中是否有类似Linux的/dev/null
,你可以用它来重定向你不想要的东西。创建变量trash_can
的唯一问题是,除非您使用rm(trash_can)
,否则它将挂起并耗尽内存。但我不认为这是一个问题。
发布于 2012-01-30 00:37:00
你可以这样做
a.list <- a.list[!sapply(a.list, is.null)]
发布于 2012-01-30 06:30:34
我想您可能想看看plyr
包中的l_ply
。它应该不返回任何内容,并且它具有lapply
的所有属性,另外还有更多属性。
https://stackoverflow.com/questions/9054592
复制相似问题