R用可能替换的向量有条件地替换字符串的一部分

R replace part of a string conditionally by a vector of possible replacements

假设在 R 中有一个数据框,其中我有(除其他外)以下列:

V1
Q1r2c5
Q1r5c11
Q1r5_1c130

我有第二个数据框,看起来像:

search    replace
5         brand1
11        brand2
130       brand3

我想要做的是:在第一个数据框中搜索 V1 中 "c" 后面的部分,并将其替换为第二个数据框中匹配的替换项。因此:

  1. Q1r2c5 变为 "brand1"
  2. Q1r5c11 变为 "brand2"
  3. Q1r5_1c130 变为 "brand3"

我已经尝试了 gsub(".*c", "", dataframe$V1"),这确实给了我 "c" 后面的部分。但是,我还没有找到一种简单的方法(除了通过循环)来根据第二个数据帧进行匹配。

有什么想法吗? 非常感谢!

您可以使用match 生成替换。在下面的示例中,我向第一个数据框添加了一个数据,以检查内容。

V1 <- read.table(text="Q1r2c5
                 Q1r5c11
                 Q1r5_1c130
                 testc130", stringsAsFactors=F)
V2 <- read.table(text = "search    replace
                 5         brand1
                 11        brand2
                 130       brand3", header = T, stringsAsFactors=F)

V2$replace[match(sub(".*c", "", V1$V1), V2$search)]
[1] "brand1" "brand2" "brand3" "brand3"