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

Luc*_*Luc 2 string r gsub

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

例子:

  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
Run Code Online (Sandbox Code Playgroud)

因此(以第 2 行为例),从“ABCDEF”中删除“CDE”,这样我们就剩下“ABF”

Ron*_*hah 5

将空模式替换为^$

dt$ToRemove[dt$ToRemove == ''] <- '^$'
Run Code Online (Sandbox Code Playgroud)

然后使用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
Run Code Online (Sandbox Code Playgroud)