如何在R中的小标题中将字符向量与字符向量列表匹配?

pet*_*yar 3 r dplyr purrr tidyverse

我想将小标题中的A列与B列进行比较,以查看B列中是否存在A列中的元素。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
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用dplyr / purrr或申请。我不确定是否应该分组,嵌套或拆分,并且有很多组合。

akr*_*run 5

我们可以用rowwise

library(tidyverse)
names(my.tibble) <- LETTERS[1:2]
my.tibble %>% 
   rowwise() %>%
   mutate(itsinit = A  %in% unlist(B))
# A tibble: 3 x 3
#  A     B         itsinit
#  <chr> <list>    <lgl>  
#1 a     <chr [2]> TRUE   
#2 b     <chr [2]> TRUE   
#3 c     <chr [2]> FALSE  
Run Code Online (Sandbox Code Playgroud)

注意:@kath 的方法map2会更快


kat*_*ath 5

您可以使用map2_lgl接受两个输入,然后循环遍历并返回逻辑向量。

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  
Run Code Online (Sandbox Code Playgroud)