基于R中的条件语句替换以下n个元素

基于R中的条件语句替换以下n个元素,r,for-loop,if-statement,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" 我想找到一个简单的方法来做这件事,因为我需要在我

我试图替换基于条件语句的元素。比如说

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"
        }
}
for(i/1:长度(df)){
如果(df[i]=“b”){

df[i+1:3]一个选项是这样使用:

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):(i+3)] <- "N"
  }
}
df=c(1,2,“b”,“b”,1,2,2,“b”,2,1,2,2,“b”,1,1,2)
用于(1中的i:长度(df)){
如果(df[i]=“b”){

df[(i+1):(i+3)]这个?
ifelse(df==“b”,c(“b”,rep(“N”,3)),df)
对不起,我错误地删除了注释。@Jimbou,那么输出是“1”“2”“N”“N”“1”“2”“2”“b”“1”“1”“2”。
替换(df,c(sapply(which(df==“b”),函数(i)i+1:3)),“N”)
也没有给出所需的输出。无论如何,谢谢。@JaneZ,您的代码有一个错误,应该是
(i+1):(i+n)
而不是
i+1:i+n