如何根据 R 中的其他列删除部分字符串?

How can I remove parts of string based on other column in R?

我想删除字符串的一部分(基于另一列)并且我对字符串的其余部分感兴趣...

示例:

  dt <- data.frame(SomeText = c("ABCDEF", "ABCDEF", "ABCDEF"), 
                   ToRemove = c("A", "CDE", ""), 
                   WantedResult = c("BCDEF", "ABF", "ABCDEF"))

>   dt
  SomeText ToRemove WantedResult
1   ABCDEF        A        BCDEF
2   ABCDEF      CDE          ABF
3   ABCDEF                ABCDEF

因此(以第 2 行为例),从 'ABCDEF' 中删除 'CDE' 所以我们剩下 'ABF'

将空模式替换为 ^$

dt$ToRemove[dt$ToRemove == ''] <- '^$'

然后使用矢量化的stringr::str_remove

dt$result <- stringr::str_remove(dt$SomeText, dt$ToRemove)
dt
#  SomeText ToRemove result
#1   ABCDEF        A  BCDEF
#2   ABCDEF      CDE    ABF
#3   ABCDEF       ^$ ABCDEF