R mutate & gsub 其中模式基于列

Dav*_*ves 2 r gsub dplyr rowwise

我正在尝试删除pattern使用and 。var_1mutate()gsub()

由于gsub()只需要一个字符串,我必须rowwise()mutate(). 否则,它将仅使用该pattern列中的第一条记录。

我想知道是否有任何其他方法可以在不使用的情况下达到相同的结果rowwise(),因为它会大大减慢过程。

test <- data.frame(
  var_1 = c('1AB', '2AB', '3C')
  ,pattern = c('AB','A','C')
)

test %>%
  dplyr::rowwise() %>%
  dplyr::mutate( result = sub(pattern, '', var_1)
          )
Run Code Online (Sandbox Code Playgroud)

期望的结果:

# A tibble: 3 x 4
# Rowwise: 
  var_1 var_2 pattern result
  <chr> <lgl> <chr>   <chr> 
1 1AB   FALSE AB      1     
2 2AB   TRUE  A       2B    
3 3C    FALSE C       3 
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 6

您可以使用stringr矢量化的选项。

使用str_remove

library(dplyr)
library(stringr)

test %>% mutate(result = str_remove(var_1, pattern))

#  var_1 pattern result
#1   1AB      AB      1
#2   2AB       A     2B
#3    3C       C      3
Run Code Online (Sandbox Code Playgroud)

str_replace这与使用替换 as相同""

test %>%  mutate(result = str_replace(var_1, pattern, ''))
Run Code Online (Sandbox Code Playgroud)