假设我有一个向量:
remove <- c(17, 18, 19, 20, 24, 25, 30, 31, 44, 45)
。
如何选择/提取向量中的每个第二个值?像这样:17, 19, 24, 30, 44
我正在尝试使用seq
函数:seq(remove, 2)
但它不能正常工作。
非常感谢任何帮助。
答案 0 :(得分:94)
remove[c(TRUE, FALSE)]
会做到这一点。
它如何运作?
如果逻辑向量用于R中的索引,如果索引向量比包含值的向量短,则会回收它们的值。
此处,向量remove
包含十个值。如果使用索引向量c(TRUE, FALSE)
,则实际命令为:remove[c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)]
因此,选择具有奇数索引号的所有值。
答案 1 :(得分:16)
remove[seq(1,length(remove),2)]
答案 2 :(得分:9)
另一种选择:
> remove[seq_along(remove) %% 2 > 0]
[1] 17 19 24 30 44