如何从向量中获取每个第三条记录?

jra*_*ara 3 r vector

我有一个矢量:

> dput(rn, 20)
c(128L, 241L, 354L, 467L, 580L, 693L, 806L, 919L, 1032L, 1145L, 
1258L, 1371L, 1484L, 1597L, 1710L, 1823L, 1936L, 2049L, 2162L, 
2275L)
Run Code Online (Sandbox Code Playgroud)

如何从此向量中获取每个第三条记录?

Mar*_*gan 6

让回收做它的魔力.

rn[c(FALSE, FALSE, TRUE)]
Run Code Online (Sandbox Code Playgroud)

虽然这(以及所有其他答案,我认为)失败了length(rn) < 3.也许

rn[3L * seq_len(length(rn)/3L)]
Run Code Online (Sandbox Code Playgroud)


And*_*rie 5

使用seq创建索引号的序列:

> rn[seq(3, 20, 3)]
[1]  354  693 1032 1371 1710 2049
Run Code Online (Sandbox Code Playgroud)

这有效,因为seq生成以下序列:

seq(from=3, to=20, by=3)
[1]  3  6  9 12 15 18
Run Code Online (Sandbox Code Playgroud)

更一般地说,如果您事先不知道矢量的长度,可以使用length以下方法计算它:

seq(from=3, to=length(rn), by=3)
[1]  3  6  9 12 15 18
Run Code Online (Sandbox Code Playgroud)

请参阅?seq更多帮助.