Donc, si l'on souhaite appliquer une opération ligne par ligne dans dplyr, on peut utiliser la fonction rowwise
, par exemple: Appliquer une fonction à chaque ligne d'une table en utilisant dplyr?
Existe-t-il une fonction unrowwise
que vous pouvez utiliser pour arrêter de faire des opérations ligne par ligne? Actuellement, il semble ajouter un group_by
Après que le rowwise
supprime les opérations de ligne, par exemple.
data.frame(a=1:4) %>% rowwise() %>% group_by(a)
# ...
# Warning message:
# Grouping rowwise data frame strips rowwise nature
Est-ce à dire que l'on doit utiliser group_by(1)
si vous souhaitez supprimer explicitement rowwise
?
Comme indiqué dans les commentaires et l'autre réponse, la bonne façon de procéder consiste à utiliser ungroup()
.
L'opération rowwise(df)
définit une des classes de df
sur rowwise_df
. Nous pouvons voir les méthodes de cette classe en examinant le code ici , qui donne la méthode ungroup
suivante:
#' @export
ungroup.rowwise_df <- function(x) {
class(x) <- c( "tbl_df", "data.frame")
x
}
Nous voyons donc que ungroup
ne supprime pas strictement une structure groupée, au lieu de cela, il supprime simplement le rowwise_df
classe ajoutée à partir de la fonction rowwise
.
Vous pouvez utiliser as.data.frame (), comme ci-dessous
> data.frame(a=1:4) %>% rowwise() %>% group_by(a)
# A tibble: 4 x 1
# Groups: a [4]
a
* <int>
1 1
2 2
3 3
4 4
Warning message:
Grouping rowwise data frame strips rowwise nature
> data.frame(a=1:4) %>% rowwise() %>% as.data.frame() %>% group_by(a)
# A tibble: 4 x 1
# Groups: a [4]
a
* <int>
1 1
2 2
3 3
4 4