library(dplyr, warn.conflicts = FALSE)
d <- iris %>%
group_by(Species).rowsは各グループに含まれる行のインデックス
d %>%
group_data()
#> # A tibble: 3 x 2
#> Species .rows
#> <fct> <list>
#> 1 setosa <int [50]>
#> 2 versicolor <int [50]>
#> 3 virginica <int [50]>中身はintegerのインデックス
d %>%
group_data() %>%
pull(.rows)
#> [[1]]
#> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#> [24] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#> [47] 47 48 49 50
#>
#> [[2]]
#> [1] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
#> [18] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
#> [35] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#>
#> [[3]]
#> [1] 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#> [18] 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
#> [35] 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150group_rows()は、group_data() %>% pull(.rows)のショートカット版
d %>%
group_rows()
#> [[1]]
#> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#> [24] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#> [47] 47 48 49 50
#>
#> [[2]]
#> [1] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
#> [18] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
#> [35] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#>
#> [[3]]
#> [1] 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#> [18] 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
#> [35] 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150実はgroup_by()した時点でインデックスがつくようになってる
attributes(d)
#> $names
#> [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
#> [5] "Species"
#>
#> $class
#> [1] "grouped_df" "tbl_df" "tbl" "data.frame"
#>
#> $row.names
#> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#> [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#> [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#> [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
#> [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
#> [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
#> [103] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
#> [120] 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
#> [137] 137 138 139 140 141 142 143 144 145 146 147 148 149 150
#>
#> $groups
#> # A tibble: 3 x 2
#> Species .rows
#> <fct> <list>
#> 1 setosa <int [50]>
#> 2 versicolor <int [50]>
#> 3 virginica <int [50]>データに操作を加えるとちゃんとattributeにも反映される
d %>%
filter(Sepal.Length > 5) %>%
attributes()
#> $class
#> [1] "grouped_df" "tbl_df" "tbl" "data.frame"
#>
#> $row.names
#> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#> [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#> [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#> [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
#> [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
#> [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
#> [103] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
#>
#> $groups
#> # A tibble: 3 x 2
#> Species .rows
#> <fct> <list>
#> 1 setosa <int [22]>
#> 2 versicolor <int [47]>
#> 3 virginica <int [49]>
#>
#> $names
#> [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
#> [5] "Species"
d[1:5,] %>%
attributes()
#> $names
#> [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
#> [5] "Species"
#>
#> $row.names
#> [1] 1 2 3 4 5
#>
#> $class
#> [1] "grouped_df" "tbl_df" "tbl" "data.frame"
#>
#> $groups
#> # A tibble: 3 x 2
#> Species .rows
#> <fct> <list>
#> 1 setosa <int [5]>
#> 2 versicolor <int [0]>
#> 3 virginica <int [0]>Created on 2018-07-16 by the reprex package (v0.2.0).
Session info
devtools::session_info()
#> Session info -------------------------------------------------------------
#> setting value
#> version R version 3.5.1 (2018-07-02)
#> system x86_64, mingw32
#> ui RTerm
#> language (EN)
#> collate Japanese_Japan.932
#> tz Asia/Tokyo
#> date 2018-07-16
#> Packages -----------------------------------------------------------------
#> package * version date source
#> assertthat 0.2.0 2017-04-11 CRAN (R 3.5.0)
#> backports 1.1.2 2017-12-13 CRAN (R 3.5.0)
#> base * 3.5.1 2018-07-02 local
#> bindr 0.1.1 2018-03-13 CRAN (R 3.5.0)
#> bindrcpp * 0.2.2 2018-03-29 CRAN (R 3.5.0)
#> cli 1.0.0 2017-11-05 CRAN (R 3.5.0)
#> compiler 3.5.1 2018-07-02 local
#> crayon 1.3.4 2017-09-16 CRAN (R 3.5.0)
#> datasets * 3.5.1 2018-07-02 local
#> devtools 1.13.6 2018-06-27 CRAN (R 3.5.0)
#> digest 0.6.15 2018-01-28 CRAN (R 3.5.0)
#> dplyr * 0.7.99.9000 2018-07-16 local
#> evaluate 0.10.1 2017-06-24 CRAN (R 3.5.0)
#> fansi 0.2.3 2018-05-06 CRAN (R 3.5.1)
#> glue 1.2.0 2017-10-29 CRAN (R 3.5.0)
#> graphics * 3.5.1 2018-07-02 local
#> grDevices * 3.5.1 2018-07-02 local
#> htmltools 0.3.6 2017-04-28 CRAN (R 3.5.0)
#> knitr 1.20.2 2018-05-10 local
#> magrittr 1.5 2014-11-22 CRAN (R 3.5.0)
#> memoise 1.1.0 2018-06-13 Github (hadley/memoise@06d16ec)
#> methods * 3.5.1 2018-07-02 local
#> pillar 1.3.0 2018-07-14 CRAN (R 3.5.1)
#> pkgconfig 2.0.1 2017-03-21 CRAN (R 3.5.0)
#> purrr 0.2.5 2018-05-29 CRAN (R 3.5.0)
#> R6 2.2.2 2017-06-17 CRAN (R 3.5.0)
#> Rcpp 0.12.17 2018-05-18 CRAN (R 3.5.0)
#> rlang 0.2.1 2018-05-30 CRAN (R 3.5.0)
#> rmarkdown 1.10 2018-06-11 CRAN (R 3.5.0)
#> rprojroot 1.3-2 2018-01-03 CRAN (R 3.5.0)
#> stats * 3.5.1 2018-07-02 local
#> stringi 1.2.3 2018-06-12 CRAN (R 3.5.0)
#> stringr 1.3.1 2018-05-10 CRAN (R 3.5.0)
#> tibble 1.4.2 2018-01-22 CRAN (R 3.5.0)
#> tidyselect 0.2.4 2018-02-26 CRAN (R 3.5.0)
#> tools 3.5.1 2018-07-02 local
#> utf8 1.1.4 2018-05-24 CRAN (R 3.5.0)
#> utils * 3.5.1 2018-07-02 local
#> withr 2.1.2 2018-06-26 Github (jimhester/withr@fe56f20)
#> yaml 2.1.19 2018-05-01 CRAN (R 3.5.0)