r - 给定位置和条件,用 R 改变向量中的值

标签 r vector

我在 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/

相关文章:

r - 使用 {tibble} 中的 enframe 将 tibble 中的列表列转换为多列

regex - R 标签之间的字符串匹配

r - 如何将 fct_relevel 与 mutate_at 语法结合使用

R: If 语句函数 with apply

c++ - 使用迭代器 c++ 删除对象类型的 vector 元素

r - ggplot2:为彩色条形图和图例添加不同的纹理

java - 线穿过矩形 - 如何找到交叉点?

c++ - 此代码如何从两个二维 vector 的叉积中检索二维 vector ?

c++ - std::vector::erase 异常安全

c++ - 从析构函数调用线程 vector