Выберите функцию состояния объекта не найден для мутированных переменных - PullRequest
0 голосов
/ 31 марта 2020

Сейчас я прохожу R для Data Science, и у меня, похоже, возникают проблемы с получением функции Select для отображения определенных столбцов. Чтобы начать это упражнение, мне сначала нужно загрузить:

library(nycflights13)
library(tidyverse)

Один из кодов, предоставленных книгой:

flights_sml <- select(flights, 
  year:day, 
  ends_with("delay"), 
  distance, 
  air_time
)
mutate(flights_sml,
  gain = dep_delay - arr_delay,
  speed = distance / air_time * 60
)

Результат этого кода будет:

Результат кода

На этом изображении видны столбцы, созданные с помощью функции mutate. Однако, когда я попытался использовать функцию выбора для выбора переменной усиление :

select(flights_sml, gain)

, я получаю сообщение об ошибке, в котором указано Ошибка в .f (.x [[i ]], ...): объект 'усиление' не найден.

Однако, если бы я сделал то же самое с другой переменной (например, day ):

select(flights_sml, day)

У меня не было бы проблем, как показано на рисунке ниже:

Результаты за день

Я не понимаю, почему это так, и был бы признателен, если бы кто-то мог пролить свет на это.

1 Ответ

0 голосов
/ 31 марта 2020

Вы не назначаете результаты мутирования чему-либо. Вам нужно сделать

flights_sml <- mutate(flights_sml,
  gain = dep_delay - arr_delay,
  speed = distance / air_time * 60
)

Чтобы сделать это как часть вашего первого утверждения, вы можете сделать

flights_sml <- select(flights, 
  year:day, 
  ends_with("delay"), 
  distance, 
  air_time
) %>%
mutate(
  gain = dep_delay - arr_delay,
  speed = distance / air_time * 60
)

. При этом pipe (%>%) использует для передачи результатов вашего выбора в вызов mutate, и назначает все обратно на flights_sml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...