0
我看到在子集的例子下面,我不把它理解为我仍然相当新的R.的R - 子集混乱
x <- c(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9)
x[c(TRUE, TRUE, FALSE, FALSE)]
[1] 1.1 2.2 5.5 6.6 9.9
我理解数字组成的向量的创建。但我不明白如何或为什么通过使用布尔值进行子集化来生成结果。
我看到在子集的例子下面,我不把它理解为我仍然相当新的R.的R - 子集混乱
x <- c(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9)
x[c(TRUE, TRUE, FALSE, FALSE)]
[1] 1.1 2.2 5.5 6.6 9.9
我理解数字组成的向量的创建。但我不明白如何或为什么通过使用布尔值进行子集化来生成结果。
这显然是一个回收问题。逻辑vector
被循环到矢量的末尾,并在找到TRUE
的任何地方返回值。为了说明它创建逻辑矢量与rep
i1 <- rep(c(TRUE, TRUE, FALSE, FALSE), length.out=9)
i1
#[1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE
和子集vector
x[i1]
#[1] 1.1 2.2 5.5 6.6 9.9
该循环的竞争也做同样的事情,即重复逻辑元素的向量,直到它到达矢量的末端。
回收的好解释[here](http://stackoverflow.com/questions/13461829/r-how-to-list-every-other-element/13462110) –