gpt4 book ai didi

r - 查找一个字符串向量在另一个字符串向量中的匹配项

转载 作者:行者123 更新时间:2023-12-02 07:37:42 25 4
gpt4 key购买 nike

我正在尝试创建新闻文章数据框架的子集,其中至少提及一组关键字或短语中的一个元素。

# Sample data frame of articles
articles <- data.frame(id=c(1, 2, 3, 4), text=c("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod", "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,", "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo", "consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse"))
articles$text <- as.character(articles$text)

# Sample vector of keywords or phrases
keywords <- as.character(c("elit", "tempor incididunt", "reprehenderit"))

# id text
# 1 1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# 2 2 tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
# 3 3 quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
# 4 4 consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse

给定关键字向量,子集应包含第 1、2 和 4 行,因为这些行包含向量的一个或多个元素。

%ingrepl() 都不起作用,因为 %in% 似乎要求对数据帧中的每个单词进行矢量化( articles$text %in% keywords 结果是四个 FALSE),并且 grep() 似乎无法处理矢量化模式(grep(keywords,articles$text) 给出错误)。这两个函数似乎都不能在多个维度上很好地工作(即,在所有行中搜索一个单词很容易,但不能同时搜索所有 3 个单词)。

查找并选择数据框中至少包含关键字向量元素之一的所有行的最佳方法是什么?

最佳答案

您可以尝试将“关键字”粘贴在一起,并用竖线字符 (|) 分隔它们,该字符的作用类似于“或”,如下所示:

> articles[grepl(paste(keywords, collapse="|"), articles$text),]
id text
1 1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
2 2 tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
4 4 consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse

关于r - 查找一个字符串向量在另一个字符串向量中的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17130129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com