58

假设我有一个向量:

remove <- c(17, 18, 19, 20, 24, 25, 30, 31, 44, 45).

如何选择/提取向量中的每一秒值?像这样:17, 19, 24, 30, 44

我正在尝试使用该seq功能:seq(remove, 2)但它并不完全有效。

任何帮助是极大的赞赏。

4

3 回答 3

144
remove[c(TRUE, FALSE)]

会成功的。


这个怎么运作?

如果逻辑向量用于 R 中的索引,则如果索引向量比包含这些值的向量短,它们的值将被回收。

这里,向量remove包含十个值。如果使用索引向量c(TRUE, FALSE),实际的命令是:remove[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)]

因此,选择所有具有奇数索引号的值。

于 2012-11-19T20:59:02.387 回答
22
remove[seq(1,length(remove),2)]
于 2012-11-19T20:48:27.643 回答
13

只是另一种选择:

remove[seq_along(remove) %% 2 > 0]
# [1] 17 19 24 30 44
于 2014-09-22T21:08:12.980 回答