3

magrittrパイプ オペレーターを使い始めて、1 つのフローで 2 つのデータ フレームを作成できるかどうかに興味がありました。たとえば、プロット用に非集計データ フレームを作成し、因子を並べ替えるには集計データ フレームを作成すると便利です (集計順序の例)。

これは、質問を説明するかなり不自然な例です。

library(dplyr)
library(tidyr)
library(magrittr)
library(ggplot2) # msleep

vore_count <- 
  na.exclude(msleep) %>%
  group_by(vore, order) %>%
  summarise(count = n()) %>%
  ungroup()

agg <- vore_count %>% 
  spread(vore, count)

と の両方vore_count agg同じフローで生成できますか?

私は次のことを試しました (%T>% を使用するだけでなく)、明らかに機能しません。

vore_count <- 
  na.exclude(msleep) %>%
  group_by(vore, order) %>%
  summarise(count = n()) %>%
  ungroup() %>%
      agg <- spread(vore, count)
4

3 に答える 3

6

を使用すると、サイド割り当てが簡単になりpipeRます。

library(pipeR)
library(dplyr)
library(ggplot2) 
library(tidyr)
na.exclude(msleep) %>>%
  group_by(vore, order) %>>%
  summarise(count = n()) %>>%
  ungroup() %>>%
  (~ vore_count) %>>% 
  spread(vore, count)%>>% 
  (~ agg)
于 2015-02-01T18:26:10.903 に答える
5

list()パイプで使用してagg、最初の data.frame の評価後に連結できます。ここでは を使用しますmtcars。結果は、2 つのデータ フレームの名前付きリストです。

library(dplyr)
library(tidyr)

na.exclude(mtcars) %>%
    group_by(cyl, disp) %>%
    summarise(count = n()) %>%
    ungroup %>%
    list(cyl_count = .) %>%
    c(list(agg = spread(.$cyl_count, cyl, count)))

これらをグローバル環境に割り当てたい場合は、次の行をパイプの最後に追加できます

... %>%
    list2env(globalenv())

ls(pattern = "agg|cyl_count")
# [1] "agg"       "cyl_count"
于 2015-02-01T16:56:35.080 に答える