ifelse具有相同变量的多个逻辑测试

时间:2013-10-11 16:30:49

标签: r if-statement

说我有一个名字的向量,像这样:

names <- c("Bernice", "Dianna", "Philip", "Laurie",
           "Rochelle", "Arturo", "Enrique", "Sarah",
           "Darryl", "Arthur")

我想创建另一个具有每个名称的性别的向量。我就是这样做的:

ifelse(names == "Bernice" | names == "Dianna" | names == "Laurie"
       | names == "Rochelle" | names == "Sarah", "Feminine",
       ifelse(names == "Philip" | names == "Arturo" | names == "Enrique"
              | names == "Darryl" | names == "Arthur", "Masculine", NA))

但是,我敢打赌,对于每个逻辑测试使用|names == ""是一个更好的选择(我的实际案例最后只有250行用于此变量)。

到目前为止,我已经尝试了这个(这可以在grep中使用,但显然不在这里):

ifelse(names == "Bernice|Dianna|Laurie|Rochelle|Sarah", "Feminine",
       ifelse(names == "Philip|Arturo|Enrique|Darryl|Arthur", "Masculine", NA))

以及:

ifelse(names == "Bernice" | "Dianna" | "Laurie" | "Rochelle" | "Sarah",
       "Feminine",
       ifelse(names == "Philip" | "Arturo" | "Enrique" | "Darryl" | "Arthur", 
              "Masculine", NA))

但似乎都没有效果。

我在处理数据帧时遇到了很多问题(必须使用同一个变量的多个逻辑测试ifelse),并且我已经检查了关于多个ifelse的SO的一些问题,但似乎无法找到我能用的任何东西。

1 个答案:

答案 0 :(得分:4)

这是一种方法

> girls <- c("Bernice", "Diana", "Laurie", "Rochelle", "Sarah")
> ifelse(names %in% girls, "Feminine", "Masculine")
 [1] "Feminine"  "Masculine" "Masculine" "Feminine"  "Feminine"  "Masculine" "Masculine"
 [8] "Feminine"  "Masculine" "Masculine"