如何在R中以固定间隔替换序列中的向量值?

时间:2017-02-15 12:55:19

标签: r

我试图将序列1的向量的值替换为100,这样在每3个元素之后,接下来的2个被0替换。例如:

a<-1:20

我希望它是这样的:

a <- c(1, 2, 3, 0, 0, 6, 7, 8, 0, 0, 11, 12, 13, 0, 0, 16, 17, 18, 0, 0)

有没有办法自动执行此操作?

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

我们可以将rep与循环逻辑向量一起使用,将某些位置的值分配给0

a[rep(c(FALSE, TRUE), c(3,2))]  <- 0
a
#[1]  1  2  3  0  0  6  7  8  0  0 11 12 13  0  0 16 17 18  0  0

答案 1 :(得分:0)

这是另一种方式,使用seq()

x<-1:20
start_<-4
step_<-5

myseq<-seq(start_,20,by=step_)
x[c(myseq,myseq+1)]<-0
x
# [1]  1  2  3  0  0  6  7  8  0  0 11 12 13  0  0 16 17 18  0  0