2016-08-13 58 views
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 

我理解数字组成的向量的创建。但我不明白如何或为什么通过使用布尔值进行子集化来生成结果。

+1

回收的好解释[here](http://stackoverflow.com/questions/13461829/r-how-to-list-every-other-element/13462110) –

回答

2

这显然是一个回收问题。逻辑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 

该循环的竞争也做同样的事情,即重复逻辑元素的向量,直到它到达矢量的末端。