从R中的字符串列中删除字符串列表

3

我有一个如下所示的数据框:

df = data.frame('name' = c('California parks', 'bear lake', 'beautiful tree house', 'banana plant'), 'extract' = c('parks', 'bear', 'tree', 'plant'))

我该如何从名称列中删除“extract”列的字符串以获得以下结果:
name_new = California, lake, beautiful house, banana

我猜测这需要结合 str_extractlapply,但我无法完全搞清楚。

谢谢!

2个回答

2

str_removestr_replace支持向量化的字符串及模式匹配。因此,如果有两列数据,只需将这两列'名称'、'提取'作为stringpattern传递给函数,以按元素方式从'名称'列中删除子字符串。一旦删除了这些子字符串,可能会出现前后带有空格的情况,可以使用trimws进行移除或者替换为str_replace

library(dplyr)
library(stringr)
df %>% 
    mutate(name_new = str_remove(name, extract),
        name_new = str_replace_all(trimws(name_new), "\\s{2,}", " "))
#                 name extract        name_new
#1     California parks   parks      California
#2            bear lake    bear            lake
#3 beautiful tree house    tree beautiful house
#4         banana plant   plant          banana

2
一种使用 gsubVectorize 的基本R选项
within(df,name_new <- Vectorize(gsub)(paste0("\\s",extract,"\\s")," ",name))

这提供了

                  name extract        name_new
1     California parks   parks      California
2            bear lake    bear            lake
3 beautiful tree house    tree beautiful house
4         banana plant   plant          banana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接