我知道有人问过类似错误代码的问题,但到目前为止我们的问题尚未得到解决。
问题:通过以列表为内容的列自行连接数据框。
数据:
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”出现了两次,因此我希望这里有一个匹配项。
答案 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”不匹配。