首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R中的字符串列中删除字符串列表

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

Stack Overflow用户
提问于 2020-08-26 05:44:08
回答 2查看 60关注 0票数 3

我有一个这样的数据帧:

代码语言:javascript
复制
df = data.frame('name' = c('California parks', 'bear lake', 'beautiful tree house', 'banana plant'), 'extract' = c('parks', 'bear', 'tree', 'plant'))

如何从name列中删除'extract‘列的字符串以获得以下结果:

代码语言:javascript
复制
name_new = California, lake, beautiful house, banana

我怀疑这需要str_extractlapply的组合,但可以很好地解决它。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-26 05:45:18

str_removestr_replace对于stringpattern都是矢量化的。因此,如果我们有两个列,只需传递这些列'name','extract‘作为stringpattern就可以按元素删除'name’列中的子字符串。一旦我们删除了这些子串,就有机会在它们之前或之后添加空格,或者用带有trimwsstr_replace替换它们(用来删除前导/滞后空格)

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2020-08-26 05:56:04

使用gsub + Vectorize的基本R选项

代码语言:javascript
复制
within(df,name_new <- Vectorize(gsub)(paste0("\\s",extract,"\\s")," ",name))

这给了我们

代码语言:javascript
复制
                  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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63587536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档