微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计数+识别两个字符串向量中的常用词 [R]

如何解决计数+识别两个字符串向量中的常用词 [R]

如何编写一个 R 函数,该函数可以采用两个字符串向量并返回常用词的数量以及哪些常用词将 stringvec1 中的元素 1 与 stringvec2 的元素 1、strinvec1 的元素 2 与 stringvec2 的元素 2 等进行比较。

假设我有这些数据:

#string vector 1
strvec1 <- c("Griffin Rahea Petersen Deana Franks Morgan","Story Keisha","Douglas Landon Lark","Kinsman Megan Thrall Michael Michels Breann","Gutierrez Mccoy Tyler Westbrook Grayson Swank Shirley Didas Moriah")

#string vector 2
strvec2 <- c("Griffin Morgan Rose Manuel","Van De Grift Sarah Sell William","Mark Landon Lark","Beerman Carlee Megan Thrall Michels","Mcmillan Tyler Jonathan Westbrook Grayson Didas Lloyd Connor")

理想情况下,我有一个函数可以返回常用词的数量以及常用词是什么:

#Non working sample of how functions would ideally work
desiredfunction_numwords(strvec1,strvec2)
[1] 2 0 2 3 4

desiredfunction_matchwords(strvec1,strvec2)
[1] "Griffin Morgan" "" "Landon Lark" "Megan Thrall Michels" "Tyler Westbrook Grayson Didas"


解决方法

您可以在每个单词处拆分字符串并执行操作。

在基础 R 中:

numwords <- function(str1,str2) {
  mapply(function(x,y) length(intersect(x,y)),strsplit(str1,' '),strsplit(str2,' '))
}

matchwords <- function(str1,y) paste0(intersect(x,y),collapse = " "),' '))
}

numwords(strvec1,strvec2)
#[1] 2 0 2 3 4

matchwords(strvec1,strvec2)
#[1] "Griffin Morgan"          ""                "Landon Lark"                  
#[4] "Megan Thrall Michels"          "Tyler Westbrook Grayson Didas"
,

您可以将 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC 用作 regex 模式,方法是将其strvec1分成单独的词并strsplit将词与交替标记 {{1} }}:

paste

您可以将此模式与 |pattern <- paste0(unlist(strsplit(strvec1," ")),collapse = "|") 一起使用:

str_count

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。