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"
此任务不需要 if
或 ifelse
。您可以使用 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
。
在 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"
此任务不需要 if
或 ifelse
。您可以使用 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
。