用 mutate 替换部分字符串(在管道中)

r.u*_*apr 6 r stringr dplyr tidyverse

我想替换字符串的一部分(在前 2 个下划线之间,第一组始终为“i”),如下面的基本 R 示例所示:

library(dplyr)
library(stringr)

d <- tibble(txt = c("i_0000_GES", "i_0000_OISO", "i_0000_ASE1333"),
            repl = c("1111", "1111", "2222"))

str_sub(d$txt, 3, 6) <- d$repl
d

# A tibble: 3 x 2
# txt            repl 
# <chr>          <chr>
# 1 i_1111_GES     1111 
# 2 i_1111_OISO    1111 
# 3 i_2222_ASE1333 2222  
Run Code Online (Sandbox Code Playgroud)

我如何使用str_sub<-或其他字符串函数来做到这一点?

Rui*_*das 4

str_sub<-这是在管道中使用的一种方法。

d %>%
  mutate(txt = `str_sub<-`(txt, 3, 6, value = repl))
## A tibble: 3 x 2
#  txt            repl 
#  <chr>          <chr>
#1 i_1111_GES     1111 
#2 i_1111_OISO    1111 
#3 i_2222_ASE1333 2222 
Run Code Online (Sandbox Code Playgroud)

请注意,参数value是最后一个,因此必须将其传递给它的名称。