按块创建索引序列

时间:2017-03-22 14:27:28

标签: r

我有一个长度为4900的向量。只有一半的向量存储相关值。

值相关的索引是51,...,100,151,...,200,...

我跳过50个值,保持50个等等。

我想提取这些值并将它们存储在一个长度为2450的新矢量中。

我正在考虑做:

new.vect <- old.vect[indexes]

其中索引是存储相关数据的索引的向量。

我正在考虑使用seq函数,但不能创建这样的索引向量。

3 个答案:

答案 0 :(得分:3)

我们可以使用逻辑向量来回收并从向量中获取值

indexes <-  rep(c(FALSE, TRUE), each = 50)   
new.vect <- old.vect[indexes]
length(new.vect)
#[1] 2450

数据

old.vect <- 1:4900

答案 1 :(得分:2)

作为替代方案,您可以将矢量放入包含50行的矩阵中,并选择每隔一列:

vals <- c(matrix(1:4900, 50)[, c(FALSE, TRUE)])
length(vals)
[1] 2450

答案 2 :(得分:0)

它是滑动窗口的工作,您可以使用rollapply函数中的zoo函数来设计此目的。所以,您也可以这样做:

library(zoo)
m <- rollapply(51:4900, width=50, by=100, FUN=c)
inds <- c(t(m))

#> length(inds)
#[1] 2450