tom*_*omw 4 r stringr purrr tidyverse
我有一个数据框,其中每个条目都是一些字符串,用逗号分隔.我想用一种简洁的方法来按位置替换每个元素.
这是数据的玩具版本
library(tidyverse)
d1 <- tibble(
r1 = c("lab1",
"lab2,lab3",
NA,
"lab3,lab4"),
r2 = c(NA,
"lab1",
"lab2",
"lab2,lab3")
)
Run Code Online (Sandbox Code Playgroud)
所以lab我想要的每个元素都由相应的rep元素重新替换.
d1 %>%
modify_at(1:2,
~ str_replace_all(.,
c("lab1", "lab2", "lab3", "lab4"),
c("rep1", "rep2", "rep3", "rep4")))
Run Code Online (Sandbox Code Playgroud)
返回
# A tibble: 4 x 2
r1 r2
<chr> <chr>
1 rep1 <NA>
2 rep2,lab3 lab1
3 <NA> lab2
4 lab3,rep4 lab2,lab3
Run Code Online (Sandbox Code Playgroud)
所以我每个单元只进行一次替换r1,而我需要全部替换它们.
这应该工作
d1 %>%
modify_at(1:2,
~ stringr::str_replace_all(.,
c("lab1" = "rep1",
"lab2" = "rep2",
"lab3" = "rep3",
"lab4" = "rep4")))
Run Code Online (Sandbox Code Playgroud)
要在字符串的每个元素中执行多次替换,请将命名向量(c(pattern1 = replacement1))传递给str_replace_all