首页 > 解决方案 > 一个 R 函数是否可以像 [] 中那样不返回任何内容?

问题描述

任何玩过 R 一段时间的人都知道,真正没有和任何长度为 0 的对象NULL之间存在差异:0

> a<-list(1,2,3,4)
> a[]#"Genuinely nothing"
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4

> a[NULL]
list()
> a[0]
list()
> a[integer(0)]
list()

第一个案例引起了我的兴趣。有什么方法可以让 R 函数返回我所说的“真正什么都没有”,以便a[foo]返回所有a子赋值并与子赋值进行交互a[]?我知道等效的行为,例如a[TRUE],但我想知道是否有可能让函数返回我所说的“真正什么都没有”。据推测,我给出的示例必须为 提供某种参数[,因此它应该存在于 R 中的某个地方。

标签: rnull

解决方案


正如哈德利在上述帖子的评论中指出的那样:

a <- list(1,2,3,4)

foo <- function() {quote(expr=)} 
a[foo()]

#> [[1]]
#> [1] 1
#> 
#> [[2]]
#> [1] 2
#> 
#> [[3]]
#> [1] 3
#> 
#> [[4]]
#> [1] 4


推荐阅读