R:如何将具有条件的列中的字符串替换为第二列?

R: How do I replace strings in a column with condition to a second column?

我有一个像这样的小数据框:

a<-c("green","green","green","green","green","green","green","green","green","green")
b<-c("blue","red","blue","red","blue","red","blue","red","blue","red")
df<-data.frame(a,b)
df
       a    b
1  green blue
2  green  red
3  green blue
4  green  red
5  green blue
6  green  red
7  green blue
8  green  red
9  green blue
10 green  red

我想用 "yellow" 替换 "green",其中 b=="red"

我可以 select 这些行 df[b=="red",] 但替换不起作用。我试过了:

> df[b=="red",]$a<-gsub("green","yellow",df[b=="red",])
Fehler in `$<-.data.frame`(`*tmp*`, "a", value = c("c(1, 1, 1, 1, 1)",  : 
  replacement has 2 rows, data has 5

> df$a[subset(df$a,df$b=="red")]<-"yellow"
Warnmeldung:
In `[<-.factor`(`*tmp*`, subset(df$a, df$b == "red"), value = c(NA,  :
  invalid factor level, NA generated
> df
       a    b
1   <NA> blue
2  green  red
3  green blue
4  green  red
5  green blue
6  green  red
7  green blue
8  green  red
9  green blue
10 green  red

> df[b=="red",]$a<-"yellow"
Warnmeldung:
In `[<-.factor`(`*tmp*`, iseq, value = c("yellow", "yellow", "yellow",  :
  invalid factor level, NA generated
> df
       a    b
1  green blue
2   <NA>  red
3  green blue
4   <NA>  red
5  green blue
6   <NA>  red
7  green blue
8   <NA>  red
9  green blue
10  <NA>  red

None 对我的问题有效。最简单的解决方案是什么?非常感谢,Treppenlift。

您可以使用哪个功能。有关示例,请参阅 http://www.endmemo.com/program/R/which.php.

df[which(df[,2]=="red"),1] <- "yellow"