r - 如何将字符向量与 R 中 tibble 中的字符向量列表匹配?
问题描述
我想将 tibble 中的 A 列与 B 列进行比较,以查看 A 列中的元素是否存在于 B 列中。A 列是字符向量。B 列是字符向量列表。我想一行一行地做这件事。我可以用循环来做到这一点。
library(tidyverse)
my.tibble = c('a','b','c') %>% tibble
my.list = list(c('a','b'),c('b','c'),c('d','e'))
my.tibble = my.tibble %>% add_column(my.list)
its.in.it = as.list(NULL)
for (i in 1:nrow(my.tibble)){
its.in.it[[i]] = my.tibble[i,1] %in% unlist(my.tibble[i,2])
}
my.tibble$its.in.it = unlist(its.in.it)
my.tibble
我正在尝试使用 dplyr/purrr 或应用来执行此操作。我不确定是否应该分组或嵌套或拆分,并且有很多组合。
解决方案
您可以使用map2_lgl
which 接受两个输入,遍历它们并返回一个逻辑向量。
names(my.tibble) <- c("char", "char.list")
my.tibble %>%
mutate(its.in.it = map2_lgl(char, char.list, ~ .x %in% .y))
# A tibble: 3 x 3
# char char.list its.in.it
# <chr> <list> <lgl>
# 1 a <chr [2]> TRUE
# 2 b <chr [2]> TRUE
# 3 c <chr [2]> FALSE
推荐阅读
- algorithm - 在未排序的数组中查找第 x 个最小元素
- sql - 根据另一个表 SQL Server (Transact-SQL) 中的条件更新一个表中的列
- python - 如何在“startswith”方法中打印整个字符串
- c - CS50 拼写器 (PSET 5) 未加载字典
- python - 如何仅限 Enum 成员访问属性和方法?
- reactjs - 如何使用 reactjs 重置表的值?
- angular - 当元素进入视野时触发 CountUp 功能
- html - CSS 内联块
- php - 尝试一次向 Steam 商店发出大约 1500 个请求
- python-3.x - Python:使用登录的 Windows 用户登录网站