Ошибка при выполнении кода с конвейером R с использованием библиотеки dplyr - PullRequest
1 голос
/ 04 мая 2019

Я работаю над набором данных (Олимпийские игры), и я хотел бы создать набор sub_datat с конкретными условиями. Для этого я использую библиотеку dplyr, и код работает. Проблема в том, что если я изменю код с помощью %>%, чтобы сделать его более читабельным, он больше не будет работать. Я вставил код ниже:

combination <- select(olympics, Sex, Season, Sport)

M_Summer <- combination %>%
  filter(Sex == "M", Season == "Summer") %>%
  mutate(Num_Sports = length(unique(M_Summer[["Sport"]]))) %>%
  select(-c(Sport))

Если я запускаю код выше, R показывает это сообщение об ошибке:

Error in mutate_impl(.data, dots): Evaluation error: object 'M_Summer' not found.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Трудно быть конкретным без дополнительной информации, но вы пытаетесь использовать фрейм данных M-Summer в функции, которая создает фрейм данных.Наилучшим вариантом может быть разделение его на две команды:

M_Summer <- combination %>%
  filter(Sex == "M", Season == "Summer") 
M_Summer <- mutate(Num_Sports = length(unique(M_Summer[["Sport"]]))) %>%
  select(-c(Sport))

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

0 голосов
/ 04 мая 2019

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

M_Summer <- combination %>%
filter(Sex == "Men", Season == "Summer")
####Break the code    
M_Summer <-M_Summer %>% mutate(Num_Sports = length(unique(M_Summer$Sport))) %>%
select(-c(Sport))

Требуется указать заголовок (df) ваших данных или воспроизводимый пример для более точного кода.Дайте мне знать, если у вас есть какие-либо вопросы.

...