【问题标题】:How to use gsub for the list of multiple patterns in R [closed]如何将 gsub 用于 R 中的多个模式列表 [关闭]
【发布时间】:2016-02-12 15:52:33
【问题描述】:

这有点难以解释,所以请多多包涵。

我想使用要“查找”的字符串列表和要替换的空字符串(“”)来执行“查找/替换”。我有一个大型数据表列,我想在上面进行查找/替换。

使用 base R,我不知道如何在 gsub 中使用模式列表。

我已经创建了一个循环,但如果有人可以帮助我弄清楚如何使用其中一个应用函数(或仅在基本 R 中的其他函数),那将更加高效,我将不胜感激。

这可行,但需要很长时间:

for(i in 1:GarbMax){
      Table.All$Cleaned<-gsub(garbage[i], "", Table.All$Cleaned, ignore.case = TRUE, fixed = TRUE)
}

我要查找的值列表在“垃圾”中,我要在其中查找它们的字段是“Table.All$Cleaned”。 “GarbMax”只是“垃圾”列表的最大值。

顺便说一句(也许),上面的代码给了我一个警告,即 ignore.case=TRUE 正在被忽略。知道为什么吗?

非常感谢您的帮助!

【问题讨论】:

  • 你可能应该做一个可重现的例子。我的猜测:在 paste(garbage, collapse="|") 上进行一次查找替换
  • 类似于this,但取出正则表达式并使用"" 替换所有字符串。

标签: r


【解决方案1】:

如果我理解正确,以下解决方案将是一种解决方法:

string <- c("onetwo", "two", "three", "fourfive", "five", "six", "sixseven")
find.list <- list("two", "five", "seven")
# in REGEX, | also represents "OR"
find.string <- paste(unlist(find.list), collapse = "|")

gsub(find.string, replacement = "", x = string)
[1] "one"   ""      "three" "four"  ""      "six"   "six" 

【讨论】:

  • 我认为 OP 的“列表”很有可能是一个字符串向量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多