2

次のような名のベクトルがあるとします。

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 に関するいくつかの質問をチェックしましたが、使用できるものを見つけることができないようです。

4

1 に答える 1