r语言 - 矢量化字符串替换显示奇怪的行为



我有几个数据帧匹配模式和替换字符串以用于替换目的。其中的前几行如下所示:

> 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元素。我阅读了很多关于这个问题的帖子,但是,到目前为止没有任何效果。使用qdapstringrstringi返回:

> 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"

任何帮助将不胜感激。

最好的问候,非常感谢!


复制dfstr_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"

最新更新