我正在尝试删除 pattern
来自 var_1
使用 mutate()
和 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)
)
期望的结果:
# 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
最佳答案
您可以使用矢量化的 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
这与使用 str_replace
替换为 ""
相同。
test %>% mutate(result = str_replace(var_1, pattern, ''))
关于R mutate & gsub 其中模式基于列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64984580/