我想替换字符串的一部分(在前两个下划线之间,第一组始终为“ 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
如何使用str_sub<-
或其他字符串函数来做到这一点?
答案 0 :(得分:2)
您可能可以这样做:
d %>%
mutate(txt = str_replace(txt, str_sub(txt, 3, 6), repl))
txt repl
<chr> <chr>
1 i_1111_GES 1111
2 i_1111_OISO 1111
3 i_2222_ASE1333 2222
这里是第一个子字符串,然后用repl
替换此子字符串。
或者:
d %>%
mutate(txt = {str_sub(txt, 3, 6) <- repl; txt})
答案 1 :(得分:1)
d %>%
mutate(txt = str_replace(txt, '0000', repl))
尽管使用regex而不是'0000'可能会更好。
答案 2 :(得分:1)
这是在管道中使用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
请注意,参数value
是最后一个,因此必须传递给它的名称。
答案 3 :(得分:1)
有了base R
,我们可以使用substring
substring(d$txt, 3, 6) <- d$repl