我在 R 中处理向量时遇到问题。我有一个看起来像这样的向量:
stack <- append(append(rep(0,8),c(1,0,0,0,0,1)),rep(0,6))
[1] 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
我的总体目标是像这样操作向量:
*当有 1 时,将向量中接下来的三个值设为 1。 *把原来的1改成0。
所以最终向量看起来像:
[1] 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0
我可以做的第二部分:
replace(stack,which(stack == 1),0)
但我不知道如何有效地完成第一个。任何帮助将不胜感激。
最佳答案
你可以在这里使用 filter
:
c(filter(sx,c(0,0,0,0,1,1,1),circular=TRUE))
## [1] 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0
关于r - 给定位置和条件,用 R 改变向量中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334817/