我想删除字符串的一部分(基于另一列)并且我对字符串的其余部分感兴趣......
例子:
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”
将空模式替换为^$
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)