R中的许多字符串替换

R中的许多字符串替换,r,string,R,String,如何为一列替换字符串,但要满足多个条件 我有以下数据 strings <- as_tibble(c("string.a","string.a", "string.b", "string.c")) # A tibble: 4 x 1 value <chr> 1 string_alice 2 string_alice 3 string_bob 4 string_joe 字符串 资料 我们可以使用gsubfn library(gsubfn

如何为一列替换字符串,但要满足多个条件

我有以下数据

strings <- as_tibble(c("string.a","string.a", "string.b", "string.c"))

# A tibble: 4 x 1
  value       
  <chr>       
1 string_alice
2 string_alice
3 string_bob  
4 string_joe 
字符串
资料


我们可以使用
gsubfn

library(gsubfn)
sub("\\.", "_",  gsubfn("(\\w+)$", setNames(as.list(replacements), 
       sub("\\.", "", conditions)), strings$value))  
#[1] "string_alice" "string_alice" "string_bob"   "string_joe" 
result <- as_tibble(c("string_alice", "string_bob", "string_joe"))

# A tibble: 4 x 1
  value       
  <chr>       
1 string_alice
2 string_alice
3 string_bob  
4 string_joe
nm = setNames(replacements, gsub("\\.", "", conditions))
sapply(strsplit(strings$value, "\\."), function(x){
    paste(c(x[1], nm[x[2]]), collapse = ".")
})
strings = structure(list(value = c("string.a", "string.a", "string.b", 
"string.c")), row.names = c(NA, -4L), class = c("tbl_df", "tbl", 
"data.frame"))
library(gsubfn)
sub("\\.", "_",  gsubfn("(\\w+)$", setNames(as.list(replacements), 
       sub("\\.", "", conditions)), strings$value))  
#[1] "string_alice" "string_alice" "string_bob"   "string_joe"