Поведение do
изменится в зависимости от того, присвоили ли вы именованный или неназванный аргумент. Для неназванных аргументов он ожидает файл данных для каждой группы, который будет привязан вместе. Для именованных аргументов он будет создавать строку для каждой группы и помещать все выходные данные в новую переменную с этим именем.
Так что в этом случае мы будем жаловаться на безымянное использовании (summary
не производит data.frame), но названное использование будет работать:
df %>%
group_by(class) %>%
do(summaries = summary(.$value)) ->
df2
Что дает:
Source: local data frame [2 x 2]
Groups: <by row>
class summaries
(fctr) (chr)
1 A <S3:summaryDefault, table>
2 B <S3:summaryDefault, table>
Мы могут получить доступ к следующим суммам:
df2$summaries[[1]]
Предоставление:
Min. 1st Qu. Median Mean 3rd Qu. Max.
100 105 110 110 115 120
Получение всех этих, как новые столбцы для df
может быть сделано только первые преобразования выходного сигнала в data.frame, как можно видеть в других ответах.
Таким образом, корень проблемы заключается в том, что summary
выводит table
вместо data.frame.
спасибо, это здорово.Другой способ, с которым я только сталкивался, - использовать функцию 'tidy()' из пакета метлы. Но назвать это очень простой способ избежать этого. –