r 通过查找表替换字符串中的文本

标签 r string replace lookup lookup-tables

我已经尝试在互联网上为我的问题找到解决方案,我感觉我知道所有的小部分,但我无法将它们放在一起。我对编程很了解,所以请耐心等待:D ...

我有一个(实际上要大得多)文本字符串,如下所示:

string <- "Test test [438] test. Test 299, test [82]."

现在我想使用查找表替换方括号中的数字并返回一个新字符串。文本中还有其他数字,但我只想更改括号中的数字,并且需要将它们放回括号中。
lookup <- read.table(text = "
Number   orderedNbr
1 270 1
2 299 2
3 82  3
4 314 4
5 438 5", header = TRUE)

我做了一个模式来使用正则表达式找到方括号
pattern <- "\\[(\\d+)\\]"

现在我环顾四周并尝试了 sub/gsub、lapply、merge、str_replace,但我发现自己无法使其工作......我不知道如何告诉 R!查看括号内的内容,在查找表中查找相同的参数并给出下一列中的内容。

我希望你能帮助我,这不是一个非常愚蠢的问题。谢谢

最佳答案

我们可以使用正则表达式来匹配方括号内的数字

library(gsubfn)
gsubfn("(?<=\\[)(\\d+)(?=\\])", setNames(as.list(lookup$orderedNbr), 
             lookup$Number), string, perl = TRUE)
#[1] "Test test [5] test. Test [3]."

或者不使用正则表达式查看 paste在“查找”的每一列上加上方括号
gsubfn("(\\[\\d+\\])", setNames(as.list(paste0("[", lookup$orderedNbr, 
          "]")), paste0("[", lookup$Number, "]")), string)

关于r 通过查找表替换字符串中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50064855/

相关文章:

r - xtable中的Cox回归输出-选择行/列并添加置信区间

r - dplyr mutate 调用结果不正确的函数

c - 将 'C' 中的字符数组拆分为 CSV

mysql复杂的更新和替换

java - 一个字符串包含另一个字符串

python - 替换部分路径 - python

r - 在 R 中针对不同的初始条件模拟 ODE 模型

r - 从列表中的所有矩阵中获取最大值

Python转义序列复杂输出

arrays - Kotlin:字符串到键值的数组