web-dev-qa-db-ja.com

R ifステートメントでgrepを使用する方法

Rでは、次の例のようなifステートメントで、Wordの赤を含むmix $ color列の色を検索し、ミックスデータフレームの新しい変数を赤に設定したいと思います。

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

データフレームミックスのサンプルデータを次に示します。

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

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

警告メッセージ:if(grepl( "deep red"、mix $ color)== TRUE) "red":条件の長さが1より大きく、最初の要素のみが使用されます

GreplはTRUEまたはFALSEのブール値を返す必要があるので、それは許容できるはずですが、何か(または多く)が欠落しています。

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

15
Jazzmine

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

> color = c("AliceBlue", "BlueViolet", "DarkRed", "MediumVioletRed")
> ifelse(grepl("Red",color),"red","other")
[1] "other" "other" "red"  "red" 
16
xraynaud

このタスクに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を指定しました。

3
Sven Hohenstein