我有几个数据帧匹配模式和替换字符串以用于替换目的。其中的前几行如下所示:
> df
pattern repl
1 1 111
2 2 112
3 3 113
4 5 114
5 6 115
我想替换给定向量中的字符串(我们在这里称之为str_vector
(。假设,str_vector
看起来像这样:
> str_vector
[1] "1" "2" "3" "4" NA "6" "7" "8" "9" "10"
我无法替换str_vector
中与相应的df$repl
字符串匹配df$pattern
元素。我阅读了很多关于这个问题的帖子,但是,到目前为止没有任何效果。使用qdap
、stringr
和stringi
返回:
> qdap::mgsub(df$pattern,df$repl,str_vector)
[1] "111" "1111112" "1111113" "4" NA
[6] "1111111111114" "7" "8" "9" "1110"
> stringr::str_replace(df$pattern,df$repl,str_vector)
[1] "1" "2" "3" "5" "6" "1" "2" "3" "5" "6"
> stringi::stri_replace_all_fixed(df$pattern,df$repl,str_vector,vectorize_all = TRUE)
[1] "1" "2" "3" "5" "6" "1" "2" "3" "5" "6"
任何帮助将不胜感激。
最好的问候,非常感谢!
复制df
和str_vector
:
df<-structure(list(pattern = c("1", "2", "3", "5", "6"), repl = c("111",
"112", "113", "114", "115")), .Names = c("pattern", "repl"), row.names = c(NA,
-5L), class = "data.frame")
str_vector<-c("1", "2", "3", "4", NA, "6", "7", "8", "9", "10")
这是一个选项
v1 <- unname(setNames(df$repl, df$pattern)[str_vector])
i1 <- which(!is.na(v1))
v1[i1[1]:i1[length(i1)]]
#[1] "111" "112" "113" NA NA "115"