【问题标题】:How to compare each element of a string to a list of words in R?如何将字符串的每个元素与 R 中的单词列表进行比较?
【发布时间】:2013-01-18 21:06:34
【问题描述】:

比如说,我有一个字符向量

一个 [1] 《嗨,快点来吧,节目太棒了》《我感冒了》
d [1] “尽快” “可怕” “冷” “哈哈” “rofl”

如果在“a”中找到任何单词(来自“d”),我应该用空格替换。如何在 R 中实现?

【问题讨论】:

  • 您能否说明替换发生的位置——在向量“a”或向量“d”中?

标签: r list merge vectorization


【解决方案1】:

我想我理解但可能是错的。你可以试试:

a  <- c("hi come asap, the $#!+ show is awsome", "I am suffering from cold")
d <- c("asap", "awsome", "cold", "lol", "rofl")

library(qdap)
mgsub(d, "", a)

产量:

> mgsub(d, "", a)
[1] "hi come , the $#!+ show is" "I am suffering from" 

【讨论】:

    【解决方案2】:

    也许以下内容对您有用:

    a  <- c("hi come asap, the show is awsome", "I am suffering from cold")
    d <- c("asap", "awsome", "cold", "lol", "rofl")
    d[d %in% gsub("[[:punct:]]", "", unlist(strsplit(a, " ")))] <- " "
    d
    # [1] " "    " "    " "    "lol"  "rofl"
    

    或者,相反的方式:

    a  <- c("hi come asap, the show is awsome", "I am suffering from cold")
    d <- c("asap", "awsome", "cold", "lol", "rofl")
    gsub(paste(d, collapse = "|"), " ", a)
    # [1] "hi come  , the show is  " "I am suffering from  "  
    

    【讨论】:

    • 您好,感谢您的快速回复。但是我最后得到一个错误 gsub(paste(d, collapse = "|"), " ", tweets2) 中的错误:断言'tree->num_tags == num_tags'在执行正则表达式时失败:文件'tre-compile. c', line 627 我知道gsub是做什么的,你能解释一下“paste(d, collapse = "|")”的意义吗
    • @user1946217,我相信它被称为“交替”(参见here),所以paste(d, collapse = "|") 创建了一个看起来像"asap|awesome|cold|lol|rofl" 的交替模式,意思是寻找“尽快”或“真棒”或....你是否也得到了这个小例子的错误,或者只是你的实际数据?您是否加载了任何可能干扰基本 R 的 gsub 的包?
    • 谢谢,这解释了......它正在处理这里给出的小例子。该错误发生在我的实际数据上。我没有在 R 中加载任何包。向量“d”在我的实际数据中也有一些带有特殊字符的单词,比如“$#!+”“$$”。这是问题吗?
    • @user1946217,也许是因为其中一些是特殊字符,可能需要转义。特殊字符通常包括` \ | ( ) [ { ^ $ * + ? `(有关更多信息,请参阅?regex)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多