R 可以像 [] 那样 return 什么都没有吗?
Can an R function ever return nothing, as in []?
任何玩过 R 一段时间的人都知道,真正的空与 NULL
、0
、长度为 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 函数 return 成为我所说的“真正没有”的东西,以便 a[foo]
return 全部 a
并与 a
之类的子赋值交互=16=]呢?我知道等效的行为,比如 a[TRUE]
,但我想知道是否有可能有一个函数 return,我称之为“真正没有”。据推测,我给出的示例必须向 [
提供某种参数,因此它应该存在于 R 中的某个地方。
正如 Hadley 在 above mentionned post 的评论中指出的那样:
a <- list(1,2,3,4)
foo <- function() {quote(expr=)}
a[foo()]
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 2
#>
#> [[3]]
#> [1] 3
#>
#> [[4]]
#> [1] 4
任何玩过 R 一段时间的人都知道,真正的空与 NULL
、0
、长度为 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 函数 return 成为我所说的“真正没有”的东西,以便 a[foo]
return 全部 a
并与 a
之类的子赋值交互=16=]呢?我知道等效的行为,比如 a[TRUE]
,但我想知道是否有可能有一个函数 return,我称之为“真正没有”。据推测,我给出的示例必须向 [
提供某种参数,因此它应该存在于 R 中的某个地方。
正如 Hadley 在 above mentionned post 的评论中指出的那样:
a <- list(1,2,3,4)
foo <- function() {quote(expr=)}
a[foo()]
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 2
#>
#> [[3]]
#> [1] 3
#>
#> [[4]]
#> [1] 4