R逻辑(0)在申请中
R logical(0) in sapply
为什么
sapply(c(TRUE, FALSE, logical(0)), length)
return
[1] 1 1
也就是说,logical(0)怎么会被忽略?
查看逻辑函数帮助,你有:logical(length = 0)。您正在创建一个长度为 0(空)的逻辑对象
我不能评论所以我编辑。
这是因为 c(TRUE, FALSE, logical(0))
是一个长度为 2 的对象,因为最后一个元素是空的。然后sapply
returns一个长度为2的对象。
@PenelopeHopHop 说的是真的,但她没有解释错误。错误是从 c()
函数组合它的参数开始的,并且因为 logical(0)
是空的,所以它没有组合使得长度为 2 的 sappply 输入因此输出长度为 2.
c(TRUE, FALSE, logical(0))
#> [1] TRUE FALSE
如果将c()
替换为list()
可以实现什么
list(TRUE, FALSE, logical(0))
#> [[1]]
#> [1] TRUE
#>
#> [[2]]
#> [1] FALSE
#>
#> [[3]]
#> logical(0)
sapply(list(TRUE, FALSE, logical(0)), length)
#> [1] 1 1 0
而不是使用 sapply(..., length)
使用 lengths
功能,因为它可以实现您的目标。
lengths(list(TRUE, FALSE, logical(0)))
#> [1] 1 1 0
为什么
sapply(c(TRUE, FALSE, logical(0)), length)
return
[1] 1 1
也就是说,logical(0)怎么会被忽略?
查看逻辑函数帮助,你有:logical(length = 0)。您正在创建一个长度为 0(空)的逻辑对象
我不能评论所以我编辑。
这是因为 c(TRUE, FALSE, logical(0))
是一个长度为 2 的对象,因为最后一个元素是空的。然后sapply
returns一个长度为2的对象。
@PenelopeHopHop 说的是真的,但她没有解释错误。错误是从 c()
函数组合它的参数开始的,并且因为 logical(0)
是空的,所以它没有组合使得长度为 2 的 sappply 输入因此输出长度为 2.
c(TRUE, FALSE, logical(0))
#> [1] TRUE FALSE
如果将c()
替换为list()
list(TRUE, FALSE, logical(0))
#> [[1]]
#> [1] TRUE
#>
#> [[2]]
#> [1] FALSE
#>
#> [[3]]
#> logical(0)
sapply(list(TRUE, FALSE, logical(0)), length)
#> [1] 1 1 0
而不是使用 sapply(..., length)
使用 lengths
功能,因为它可以实现您的目标。
lengths(list(TRUE, FALSE, logical(0)))
#> [1] 1 1 0