Comme indiqué (https://github.com/hadley/dplyr/issues/1800), je poste cette question ici.
Quelle est la meilleure façon de faire cette variation sur l'imbrication d'un bloc de données ? Je ne voulais pas utiliser tidyr::nest()
parce que je ne voulais pas que les autres variables soient enterrées dans des blocs de données - je les voulais sous forme de colonnes de liste individuelles. Quelque chose comme ça :
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarize(gear = split(gear, cyl),
wt = split(wt, cyl))
#> Source: local data frame [3 x 3]
#>
#> cyl gear wt
#> <dbl> <list> <list>
#> 1 4 <dbl [11]> <dbl [11]>
#> 2 6 <dbl [7]> <dbl [7]>
#> 3 8 <dbl [14]> <dbl [14]>
Depuis, j'ai trouvé un autre moyen de le faire en utilisant purrr::transpose()
:
library(purrr)
library(dplyr)
library(tidyr)
mtcars %>%
group_by(cyl) %>%
nest(gear, wt) %>%
bind_cols(transpose(.$data)) %>%
select(-data)
#> Source: local data frame [3 x 3]
#>
#> cyl gear wt
#> <dbl> <list> <list>
#> 1 6 <dbl [7]> <dbl [7]>
#> 2 4 <dbl [11]> <dbl [11]>
#> 3 8 <dbl [14]> <dbl [14]>
Je pense que le moyen le plus simple est probablement:
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarize(gear = list(gear), wt = list(wt))
Je ne sais pas si cela mérite un nouveau verbe de haut niveau ou non.
Pourriez-vous donner un peu plus d'informations sur le contexte plus large?
Votre façon de créer le résultat est beaucoup plus propre.
Le déclencheur immédiat a été de créer des exemples pour comprendre pourquoi je ne pouvais pas unnest()
certaines trames de données, ce qui s'est avéré être un problème avec dplyr::combine()
(https://github.com/hadley/dplyr/ numéros/1780).
Je vais fermer. Si cela compte dans la vraie vie, cela reviendra.
Voir la dernière solution me fait réaliser que summarise_each()
est une autre option.
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise_each("list", gear, wt)
#> Source: local data frame [3 x 3]
#>
#> cyl gear wt
#> <dbl> <list> <list>
#> 1 4 <dbl [11]> <dbl [11]>
#> 2 6 <dbl [7]> <dbl [7]>
#> 3 8 <dbl [14]> <dbl [14]>
Commentaire le plus utile
Je pense que le moyen le plus simple est probablement:
Je ne sais pas si cela mérite un nouveau verbe de haut niveau ou non.
Pourriez-vous donner un peu plus d'informations sur le contexte plus large?