16

RI では、次の例のような if ステートメントで like を実行したいと考えています。この例では、mix$color 列で red という単語を含む色を検索し、mix データフレームの新しい変数を赤に設定しています。

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

データフレーム ミックスのサンプル データは次のとおりです。

アリスブルー ブルーバイオレット ダークレッド ミディアムバイオレットレッド

次のエラー メッセージが表示されます。

警告メッセージ: In if (grepl("deep red", mix$color) == TRUE) "red" : 条件の長さが 1 を超えており、最初の要素のみが使用されます

grepl は TRUE または FALSE のブール値を返す必要があると思いますが、それは受け入れられるはずですが、何か (または多く) が不足しています。

ご協力いただきありがとうございます。

4

2 に答える 2

22

grepl と ifelse ステートメントを使用できます。

> color = c("AliceBlue", "BlueViolet", "DarkRed", "MediumVioletRed")
> ifelse(grepl("Red",color),"red","other")
[1] "other" "other" "red"  "red" 
于 2015-02-07T17:12:32.090 に答える
5

このタスクには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大文字と小文字の一致を指定しました。

于 2015-02-07T17:31:48.740 に答える