Различия между списком значений и as.list набора данных - PullRequest
0 голосов
/ 20 апреля 2019

Проблема в том, что в следующем примере запрос не даст мне результата, если я использую список, созданный путем фильтрации набора данных, в то время как он работает, если я создаю список с тем же результатом, но записанный в виде строк.

У меня есть этот набор данных футбольных команд.Я должен взять матчи, сыгранные южной командой (Наполи, Кальяри, Кротоне и Палермо).Я пробовал двумя способами:

  1. Создание списка с помощью фильтрации данных_фрейма football_ratings
south_teams<- football_ratings %>%
  filter(region=="South") %>%
  select(HomeTeam) %>%
  as.list()

# "Napoli"   "Cagliari" "Crotone"  "Palermo" 
Создание списка строк с тем же результатом
south_teams<- c("Napoli","Cagliari","Crotone","Palermo")

Если я отфильтрую набор данных со вторым списком, я получу таблицу из 140 строк.Если я попытаюсь сделать то же самое с первым списком, я получу таблицу из 0 строк.

Если я отфильтрую набор данных со вторым списком, я получу таблицу из 140 строк.Если я попытаюсь сделать то же самое с первым списком, я получу таблицу из 0 строк.

football_matches %>%
  filter(HomeTeam %in% south_teams | AwayTeam %in% south_teams)

Как я могу это исправить?

1 Ответ

0 голосов
/ 20 апреля 2019

Давайте представим, что это ваш первый список

south_teams <- tibble(HomeTeam = c("Napoli","Cagliari","Crotone","Palermo")) %>% 
  as.list()

Если мы посмотрим на результаты, мы увидим

south_teams
# $`HomeTeam`
# [1] "Napoli"   "Cagliari" "Crotone"  "Palermo" 

Так что вам нужно south_teams$HomeTeam, а не south_teams Например:

"Napoli" %in% south_teams
# [1] FALSE
"Napoli" %in% south_teams$HomeTeam
# [1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...