2015-04-21 11 views
17

Quindi, se si vuole applicare una riga per riga in un'operazione dplyr, si può usare la funzione rowwise, ad esempio: Applying a function to every row of a table using dplyr?Come si smette di usare rowwise in dplyr?

C'è una funzione unrowwise che è possibile utilizzare per smettere di fare operazioni di riga per riga? Attualmente, sembra che si aggiunga uno group_by dopo che lo rowwise rimuove le operazioni di riga, ad es.

data.frame(a=1:4) %>% rowwise() %>% group_by(a) 
# ... 
# Warning message: 
# Grouping rowwise data frame strips rowwise nature 

Significa questo si dovrebbe usare group_by(1), se si desidera rimuovere in modo esplicito rowwise?

+4

Does 'ungroup()' funziona? – r2evans

+0

Ho eseguito il rollback della modifica del titolo in quanto non mi è chiaro che 'rowwise' crea un' grouped_df'. Inoltre, vedere questo problema correlato. https://github.com/hadley/dplyr/pull/553 – Alex

risposta

23

Come trovato nei commenti e nell'altra risposta, il modo corretto di farlo è utilizzare ungroup().

L'operazione rowwise(df) imposta una delle classi di df in rowwise_df. Possiamo vedere i metodi di questa classe esaminando il codice here, che dà il ungroup seguente metodo:

#' @export 
ungroup.rowwise_df <- function(x) { 
    class(x) <- c("tbl_df", "data.frame") 
    x 
} 

Così vediamo che ungroup non è la rimozione strettamente una struttura raggruppati, invece rimuove solo la classe aggiunte dalla rowwise_df la funzione rowwise.

Problemi correlati