Ошибка R «Не удается присоединиться к… из-за несовместимых типов (список / список)» - PullRequest
1 голос
/ 19 февраля 2020

Мне известно, что были заданы вопросы с похожими кодами ошибок, но наша проблема до сих пор не решена.

Проблема: самостоятельное соединение самих данных в виде столбца со списком в качестве содержимого.

ДАННЫЕ :

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 голосов
/ 19 февраля 2020

НЕ ответ, скорее комментарий (не может комментировать из-за недостаточной репутации)

Я думаю, что @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. Но, тем не менее, он работает только в «правильном» порядке, то есть «ab c»; "cba" не будет соответствовать.

0 голосов
/ 19 февраля 2020

Я не думаю, что вы можете join использовать списки как by, я думаю, by должна быть атомарной c структурой данных. Однако это работает:

bsp_df %>%
  mutate(ID = paste0(unlist(bsp_liste1), collapse="")) %>% 
  inner_join(bsp_df %>% mutate(ID = paste0(unlist(bsp_liste1), collapse="")),by="ID")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...