Dplyr для вывода данных класса data.frame

Я могу суммировать кадр данных с dplyr следующим образом:

mtcars %.%
group_by(cyl) %.%
summarise(mean(mpg))

Чтобы преобразовать вывод обратно в класс data.frame, мой текущий подход таков:

as.data.frame(mtcars %.%
group_by(cyl) %.%
summarise(mean(mpg)))

Есть ли способ получить dplyr для вывода класса data.frame без использования as.data.frame?

Ответ 1

Как было указано в комментариях, вам может не понадобиться преобразовывать его, поскольку он может быть достаточно хорош, чтобы он наследовал от фрейма данных. Если это не достаточно хорошо, то это все еще использует as.data.frame, но немного более элегантно:

mtcars %>%
   group_by(cyl) %>%
   summarise(mean(mpg)) %>%
   as.data.frame()

ДОБАВЛЕНО. Я просто прочитал в комментариях, что причина, по которой вы хотите, состоит в том, чтобы избежать усечения печатного выхода. В этом случае просто определите этот параметр, возможно, в вашем файле .Rprofile:

options(dplyr.print_max = Inf)

(Обратите внимание, что вы все равно можете достигнуть максимума, определенного параметром "max.print", связанным с печатью, поэтому вам нужно будет установить его тоже, если он слишком мал для вас.)

Обновление: Изменено %.% до %>%, чтобы отразить изменения в dplyr.

Ответ 2

В дополнение к тому, что упомянуто выше Г. Гротендиком, вы можете преобразовать его в новый фреймворк данных:

new_summary <- mtcars %>%
   group_by(cyl) %>%
   summarise(mean(mpg)) %>%
   as.data.frame()