gpt4 book ai didi

r - 在正则表达式向量中查找字符串的匹配项

转载 作者:行者123 更新时间:2023-12-04 11:08:32 25 4
gpt4 key购买 nike

假设我有一个字符向量

vals <- c("hello","goodbye","junk")

和一个正则表达式目标向量
targets <- c("(hello|goodbye)","^j","other")

(我愿意规定 vals 中的每个元素都与 targets 中的一个元素完全匹配)。是否有一种现有的、高效/紧凑/矢量化的方法来查找 vals 中每个元素的匹配索引?在 targets ? ( match 不起作用:它匹配字符串表,而不是正则表达式。)因此所需的输出是 c(1,1,2)对于这个例子。 Base-R 或 tidyverse/ stringr欢迎解决。

最佳答案

一种方法是设置 list 的名称。与序列和 stack到两列 data.frame。 NULL元素将被删除 stack .现在,我们提取第二列以获得 list指数

as.integer(stack(setNames(m, seq_along(m)))[,2])
#[1] 1 1 2

注意:这里 m是@BenBolker 的 list 的输出索引来自 grep输出

或使用 tidyverse
library(tidyverse)
crossing(targets, vals) %>%
mutate(ind = group_indices(., targets)) %>%
filter(str_detect(vals, targets)) %>%
pull(ind)
#[1] 1 1 2

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

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