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

标签 r string dataframe

我有一个像这样的数据框:

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

如何从名称列中删除“提取”列的字符串以获得以下结果:

name_new = California, lake, beautiful house, banana

我怀疑这需要 str_extract lapply 的组合,但我很清楚。

谢谢!

最佳答案

str_removestr_replace 被向量化为 stringpattern。因此,如果我们有两列,只需将这些列“name”、“extract”作为 stringpattern 传递,以按元素删除“name”列中的子字符串。一旦我们删除了这些子字符串,之前或之后可能会有空格可以删除或替换为 str_replacetrimws (删除前导/滞后空格)

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

关于从 R 中的字符串列中删除字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63587536/

相关文章:

string - 我应该在 Perl 中使用 $hash {"string"} 还是 $hash{string} ?

c# - 我可以在 C# 中将正则表达式与 String.Replace 一起使用吗?

r - 使用 R 的数据帧中字符串的频率及其 ID

通过创建新行替换数据框中一行的值,但保留修改后的原始行

r - ggplot 中的嵌套面板

r - 同一图中的多个变量

java - java中如何获取特定长度的字符串

r - 用离散轴注释 ggplot(带有可重复的示例)

performance - 在循环中使用 kernlab 包中的 rbfdot 性能不佳

r - 如何使用 R 自动重命名宽数据中的列