假设我有一个名字向量,如下所示:
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 问题,但似乎找不到任何我可以使用的东西。