do
的行爲將根據您是否給它一個有名或無名的參數而改變。對於未命名的參數,它需要爲每個組綁定一個data.frame。對於命名參數,它將爲每個組創建一行,並將輸出的內容放入具有該名稱的新變量中。
所以在這種情況下,我們會抱怨未命名的使用(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()'函數。但是命名它是避免這種情況的一種非常簡單的方法。 –