R错误“由于类型(列表/列表)不兼容,无法加入…”

时间:2020-02-19 11:34:08

标签: r dataframe self-join

我知道有人问过类似错误代码的问题,但到目前为止我们的问题尚未得到解决。

问题:通过以列表为内容的列自行连接数据框。

数据

bsp_fn <- c("1","2","3","4","5")
bsp_liste1 <- list(list("a","b","c"),list("a","b"),list("a","c"),list("a","b","c"),list("b","c"))
bsp_df <- tibble(bsp_fn,bsp_liste1)

问题

bsp_df %>% inner_join(bsp_df,by="bsp_liste1") 

Error: Can't join on'bsp_liste1' x 'bsp_liste1' because of incompatible types (list / list)

问题

我可以“通过比较”加入列表吗?由于列表“ a”,“ b”,“ c”出现了两次,因此我希望这里有一个匹配项。

2 个答案:

答案 0 :(得分:0)

我认为您不能join将列表用作by,我认为by必须是原子数据结构。但是,这可行:

bsp_df %>%
  mutate(ID = paste0(unlist(bsp_liste1), collapse="")) %>% 
  inner_join(bsp_df %>% mutate(ID = paste0(unlist(bsp_liste1), collapse="")),by="ID")

答案 1 :(得分:0)

不是答案,而是评论(由于声誉不足而无法评论)

我认为@Sedir的含义如下:

bsp_df %>%
     group_by(bsp_fn) %>% 
     mutate(ID = paste0(unlist(bsp_liste1), collapse="")) %>% 
     inner_join(bsp_df %>% group_by(bsp_fn) %>% mutate(ID = paste0(unlist(bsp_liste1), collapse="")),by="ID")

匹配1-1和1-4、2-2、3-3、4-1、4-4、5-5。但是,它仍然只能以“正确”的顺序工作,即“ abc”; “ cba”不匹配。