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