根据 R 中的条件语句替换以下 n 个元素

标签 r for-loop if-statement

我正在尝试根据条件语句替换元素。例如

df=c(1,2,"b","b",1,2,2,"b",2,1,2,2,"b",1,1,2)
for(i in 1:length(df)){
 if (df[i]=="b"){
  df[i+1]="N"
  df[i+2]="N"
  df[i+3]="N"
 }
}
df
[1] "1" "2" "b" "N" "N" "N" "2" "b" "N" "N" "N" "2" "b" "N" "N" "N"

我想找到一种简单的方法来做到这一点,因为我需要替换数据框中的以下 90 个元素。所以我尝试了下面的方法,但没有给出所需的输出。

n=3
for(i in 1:length(df)){
  if (df[i]=="b"){df[i+1:i+n]="N"}
}
df
[1] "1" "2" "b" "b" "1" "2" "N" "N" "N" "N" "N" "2" "b" "1" "1" "2" "N"  "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N"  

非常感谢您的帮助或建议。

最佳答案

您可以通过以下方式修改代码:

for(i in 1:length(df)){
        if (df[i]=="b"){
                df[i+1:3]<-"N"
        }
}

关于根据 R 中的条件语句替换以下 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47891545/

相关文章:

r - 使用锥形窗口计算运行平均值

r - 在 R 中,有没有办法在同一台机器上的 R 的不同进程之间共享一个变量?

java - 尝试使用 ArrayList 的方法时出现语法错误?

函数中for循环索引的Javascript范围

c++ - 斐波那契和 'if constexpr'

mysql - 根据选中的复选框更改 sql 查询

r - 如何使用 dplyr 计算与 rowmean 的比率

c++ - 对于循环和输入数据?

c - avr if 语句优化速度或大小

R:从 hclust 绘制较小的集群