library(dplyr)
mtcars %>% mutate_if(grepl('Mazda',.), ~replace(., grepl('Mazda', .), "A car"))
首先要了解你为什么replace
未能看出两者之间的区别'Mazda RX4'==mtcars
and grepl('Mazda', mtcars)
,自从你使用grepl
, replace
uses
Replace 将 x 中的值替换为 list 中给定的索引值。如果需要的话,values中的值会被回收。
现在,如果我们确保使用以下方法获得合适的输出,我们可以使用您的第一种方法sapply
例如
mtcars %>% replace(., sapply(mtcars, function(.) grepl('Mazda',.)), "A car")
Update:
要替换我们可以使用的多种模式stringr::str_replace_all
library(stringr)
library(dplyr)
mtcars %>% mutate_if(str_detect(., 'Mazda|Merc'),
~str_replace_all(., c("Mazda.*" = "A car", "Merc.*" = "B car")))