> a <- sample(c(1:10), 20, replace = TRUE)
> a
[1] 6 3 6 2 6 9 3 9 9 8 2 10 7 9 1 5 3 10 5 5
> a[c(TRUE,FALSE)]
[1] 6 6 6 3 9 2 7 1 3 5
为什么[c(TRUE,FALSE(]会给我一个数组的ODD元素?c(TRUE,FALSE(的长度为2。在我看来,这应该给我一个索引1,这是真的。
为什么会这样?
逻辑子集被回收以匹配向量的长度(数值子集不被回收(。
来自help("[")
:
参数
i,j,…
仅对于
[
-索引:i
、j
、…
可以是逻辑向量,指示要选择的元素/切片。如果以匹配相应的范围。i
、j
、…
也可以是负整数,表示要从选择当通过
[
对数组进行索引时,单个自变量i
可以是具有与CCD_ 11的维度一样多的列;结果是具有与每行中的索引集相对应的元素的向量CCD_ 12。
要进行说明,请尝试:
cbind.data.frame(x = 1:10, odd = c(TRUE, FALSE), even = c(FALSE, TRUE))
# x odd even
# 1 1 TRUE FALSE
# 2 2 FALSE TRUE
# 3 3 TRUE FALSE
# 4 4 FALSE TRUE
# 5 5 TRUE FALSE
# 6 6 FALSE TRUE
# 7 7 TRUE FALSE
# 8 8 FALSE TRUE
# 9 9 TRUE FALSE
# 10 10 FALSE TRUE
a[TRUE]
提供所有元素,a[FALSE]
不提供任何元素。对于a[c(TRUE,FALSE]
,它将把length(c(TRUE,FALSE))
(2(包装成length(a)
(20(,所以例如它就像TRUE, FALSE, TRUE, ....
一样,然后它只给你odds
索引。