R gsub 从 x 列中的单词中删除 y 列中的单词

标签 r gsub

我正在尝试使用 gsub 删除 y 列中 x 列中的单词/文本。

x = c("a","b","c")
y = c("asometext", "some, a b text", "c a text")
df = cbind(x,y)
df = data.frame(df)
df$y = gsub(df$x, "", df$y)

如果我运行上面的代码,它只会删除第 x 行 1 列中的文本,而不是所有行:

> df
  x             y
1 a      sometext
2 b some,  b text
3 c       c  text

我希望最终结果是:

> df
  x             y
1 a      sometext
2 b      some,   text
3 c      text

因此,x 列中的所有单词/字母都应从 y 列中删除。 gsub 可以做到这一点吗?

最佳答案

通常 gsub 采用三个参数 1) 模式、2) 替换和 3) 用于替换值的向量。

模式必须是单个字符串。更换时也是如此。函数中唯一对多个值开放的部分是向量。因此,我们将其称为矢量化。

gsub(df$x, "", df$y)  #doesn't work because 'df$x' isn't one string

模式参数没有矢量化,但我们可以使用maply来完成任务。

ma​​ply 和 gsub (bffs)

x = c("a","b","c")
y = c("asometext", "some, a b text", "c a text")
repl = ""

#We do
mapply(gsub, x, repl, y)

#On the inside
gsub(x[[1]], repl[[1]], y[[1]])
gsub(x[[2]], repl[[2]], y[[2]])
gsub(x[[3]], repl[[3]], y[[3]])

你可能会问,我只有一个replrepl[[2]]repl[[3]]怎么用> 工作?该函数注意到了我们的情况,并重复“repl”,直到它等于其他函数的长度。

关于R gsub 从 x 列中的单词中删除 y 列中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049013/

相关文章:

R 中使用 gsub 删除尾随空格

r - gsub 并删除 R 中 < 和 > 之间的所有字符

r - 限制可重现示例的分层数据大小

r - for 循环 - 替换的长度为零

r - 如何在 ggplot() 内的交互(...)参数中混合非标准和标准评估?

r中的递归和加乘积

Ruby 将 gsub 与正则表达式结合使用

R,二项式分布图

regex - gsub 没有替换 R 中的所有预期匹配项

ruby - gsub 或 scan 中的匹配位置