R中如何使用grep在数据框列表中匹配对应字符列表的模式并返回位置
可行解决方法
原有代码问题说明
- 第一种
lapply写法缺少grep的第二个参数,即需要搜索的目标向量(List1对应位置数据框的a列) - 第二种
purrr::map2写法没有正确定义传入函数的参数,且错误调用了List2$A,无需额外提取列表层级,直接取传入的对应元素即可
1 基础R实现
NewList1 <- lapply(seq_along(List1), function(x) { grep(pattern = List2[[x]], x = List1[[x]]$a) })
2 purrr实现(更简洁)
library(purrr) # 写法1:显式定义参数 NewList2 <- map2(List2, List1, function(pattern, df) { grep(pattern = pattern, x = df$a) }) # 写法2:公式简写 NewList2 <- map2(List2, List1, ~grep(.x, .y$a))
以上两种写法运行后得到的结果都和你给出的期望输出完全一致。
内容的提问来源于stack exchange,提问作者Emily O'Connor
相关产品推荐
相关产品推荐

