【问题标题】:How do I replace exact set of words? [duplicate]如何替换确切的单词集? [复制]
【发布时间】:2016-06-10 16:11:33
【问题描述】:

我有一组词要从我的分析中排除。例如,

trash<- c("de" , "do", "das", ...., "da") # this set can be with n elements 

另外,我有一个名为 matc 的 data.frame,其中包含两个变量 v1 和 v2,我想将垃圾中的每个单词替换为空。

当我尝试使用以下代码执行此操作时:

for(k in 1:length(pr_us))
 {
   matc$V1<- gsub(pr_us[k],  "" , matc$V1 )
   matc$V2<- gsub(pr_us[k],  "" , matc$V2 )
 }

替换不准确。换句话说,如果 matc$V1 是“Maria da Graça Madalena”,则结果是“Maria Graça Malena”,我想要以下结果“Maria Graça Madalena”。我试过这样的东西

for(k in 1:length(pr_us))
{
  matc$V1<- gsub( paste0(pr_us[k], "\bb") , "" , matc$V1 )
  matc$V2<- gsub( paste0(pr_us[k], "\bb") , "" , matc$V2 )
}

但是,这也行不通。

有没有避免循环的解决方案?一些具有应用功能的解决方案......

【问题讨论】:

标签: r


【解决方案1】:

由于您是匹配单词,因此在垃圾单词之前和之后包含空格更合理。所以对于OP给出的具体例子,它可以是:

gsub("\\s+da\\s+", " ", "Maria da Graça Madalena")
[1] "Maria Graça Madalena"

【讨论】:

  • 单词边界 \\b 比空格更合适,以防有标点符号或单词是字符串中的第一个或最后一个。
猜你喜欢
  • 2022-11-06
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 2015-09-11
  • 1970-01-01
  • 2012-12-19
  • 2011-07-11
  • 1970-01-01
相关资源
最近更新 更多