这种赔率/偶数提取在R语言中是如何工作的


> 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,…

仅对于[-索引:ij可以是逻辑向量,指示要选择的元素/切片。如果以匹配相应的范围。ij也可以是负整数,表示要从选择

当通过[对数组进行索引时,单个自变量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索引。

最新更新