在RI中想要在if語句中像下面的示例那樣在包含單詞red並設置新變量的混合$ color列中搜索任何顏色在混合數據框中以紅色顯示。R如何在if語句中使用grep
mix$newcolor <- if(grep("Red",mix$color) "red"
下面是一些示例數據爲數據幀結構:
艾莉斯藍 藍紫 暗紅色 暗紫
我收到此錯誤信息:
警告消息: In if(grepl(「deep red」,mix $ co LOR)== TRUE)「紅色」:條件具有長度> 1並且僅將使用的第一元件
我認爲grepl應該返回TRUE或FALSE布爾值,使得應該是可接受的,但是我錯過了一些東西(或很多)。
感謝您的幫助。
這裏你需要矢量化的'ifelse'而不是正常的if和else。使用grepl時,您也不需要== true。 – 2015-02-07 17:05:35
是的,那就像一個冠軍。我以前曾考慮過使用ifelse,但是難以置信的是其他部分,但我只是將其中的$ newcolor引用爲其他部分。它將是空的或有轉換後的值。謝謝。 – Jazzmine 2015-02-07 17:14:33
ifelse的一個優點是可以輕鬆地嵌套它們。假設你想將顏色矢量轉換爲「純色」顏色:'color = c(「AliceBlue」,「BlueViolet」,「DarkRed」,「MediumVioletRed」,「DarkGreen」); ifelse(grepl( 「紅」,顏色), 「紅」,ifelse(grepl( 「綠」,顏色), 「綠色」,ifelse(grepl( 「藍」,顏色), 「藍」, 「其他」)) )' – xraynaud 2015-02-07 17:27:22