web-dev-qa-db-ja.com

クラスdata.frameを出力するdplyr

データフレームをdplyrで次のように要約できます。

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

出力をクラスdata.frameに戻すための現在のアプローチは、次のとおりです。

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

data.frameを使用せずにdplyrを取得してクラスas.data.frameを出力する方法はありますか?

15
luciano

コメントで指摘されているように、データフレームから継承するのに十分である可能性があるため、変換する必要がない場合があります。それが十分でない場合でも、これはas.data.frameを使用しますが、少しエレガントです。

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

[〜#〜] add [〜#〜]コメントを読んだところ、これが必要な理由は、印刷出力の切り捨てを回避するためです。その場合は、おそらく.Rprofileファイルでこのオプションを定義してください。

options(dplyr.print_max = Inf)

(印刷に関連付けられた"max.print"オプションで定義された最大値に達する可能性があるため、低すぎる場合はそれも設定する必要があることに注意してください。)

更新: dplyrの変更を反映するために、%.%%>%に変更しました。

21
G. Grothendieck

G. Grothendieckが上で述べたことに加えて、それを新しいデータフレームに変換することができます。

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