我需要知道向量中的哪个词在字符串中排在第一位.我需要在一个包含数百万条记录的大型数据框上运行此代码.

df是我的样本数据

df <- data.frame(ID = c(1,2,3),
Text = c("A basket of fruits having apples, green bananas, and peaches",
"A basket of fruits having green bananas, apples, and peaches",
"A basket of fruits having peaches, green bananas, and apples"))

我要匹配的单词在一个向量中

vec <- c("green bananas", "apples", "peaches")

我希望每个记录都有一个这样的结果列

df$Result 
"apples", "green bananas", "peaches"

推荐答案

你可以使用regmatches+regexpr,如下所示

transform(
    df,
    Result = regmatches(Text, regexpr(paste0(vec, collapse = "|"), Text))
)

str_extract

df %>%
    mutate(Result = str_extract(Text, paste0(vec, collapse = "|")))

这给了我们

  ID                                                         Text        Result
1  1 A basket of fruits having apples, green bananas, and peaches        apples
2  2 A basket of fruits having green bananas, apples, and peaches green bananas
3  3 A basket of fruits having peaches, green bananas, and apples       peaches

R相关问答推荐

R的GG平行坐标图中的排序变量

带有gplot 2的十字舱口

在值和NA的行顺序中寻找中断模式

咕噜中的元素列表:map

如何优化向量的以下条件赋值?

如何改变x轴比例的列在面

即使硬币没有被抛出,也要保持对其的跟踪

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

R中的哈密顿滤波

以相同的方式对每个表进行排序

按多列统计频次

在列表中排列R数据框中的列顺序

如何将Which()函数用于管道%>;%

使用R将简单的JSON解析为嵌套框架

使用来自嵌套列和非嵌套列的输入的PURRR:MAP和dplyr::Mariate

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

如何提取R中其他字符串和数字之间的字符串?

无法将条件case_when()应用于使用!!创建的新变量Mutations

如何在AER::ivreg中指定仪器?

如何捕获这个shiny 的、可扩展的react 性用户输入矩阵作为另一个react 性对象,以便进一步操作?