R如何在if语句中使用grep

R how to use grep in if statement

在 R 中,我想在 if 语句中做类似下面的示例,我在 mix$color 列中搜索包含单词 red 的任何颜色,并将混合数据框中的新变量设置为红色。

mix$newcolor <- if(grep("Red",mix$color) "red"

下面是数据帧组合的一些示例数据:

爱丽丝蓝 紫罗兰色 深红 中紫红

我收到此错误消息:

Warning message: In if (grepl("deep red", mix$color) == TRUE) "red" : the condition has length > 1 and only the first element will be used

我认为 grepl 应该返回一个 TRUE 或 FALSE 布尔值,这样应该是可以接受的,但我遗漏了一些东西(或很多)。

感谢您的帮助。

您可以使用 grepl 和 ifelse 语句:

> color = c("AliceBlue", "BlueViolet", "DarkRed", "MediumVioletRed")
> ifelse(grepl("Red",color),"red","other")
[1] "other" "other" "red"  "red" 

此任务不需要 ififelse。您可以使用 sub:

color <- c("darkred", "indianred", "violetred", "deep red", 
           "Orange Red", "blue", "yellow")

sub(".*red.*", "red", color, ignore.case = TRUE)
# [1] "red"    "red"    "red"    "red"    "red"    "blue"   "yellow" 

sub 命令用 "red" 替换所有字符串,包括子字符串 "red"。此外,我为大写和小写匹配指定了 ignore.case = TRUE