我有一个长度为4900的向量。只有一半的向量存储相关值。
值相关的索引是51,...,100,151,...,200,...
我跳过50个值,保持50个等等。
我想提取这些值并将它们存储在一个长度为2450的新矢量中。
我正在考虑做:
new.vect <- old.vect[indexes]
其中索引是存储相关数据的索引的向量。
我正在考虑使用seq函数,但不能创建这样的索引向量。
答案 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