Ecco un frame di dati che contiene una colonna di ID utente:Perché la funzione digest restituisce lo stesso valore ogni volta che viene utilizzata con il mutante di dplyr?
> head(df)
uid
1 14070210
2 14080815
3 14091420
Per amor di discussione, voglio creare una nuova colonna che contiene la radice quadrata della id utente, e un altro nuova colonna che contiene un hash di l'id utente. Così faccio questo:
df_mutated <- df %>%
mutate(sqrt_uid = sqrt(uid), hashed_uid = digest(uid))
... dove digest() proviene dal pacchetto digest.
Mentre la radice quadrata sembra funzionare, la funzione digest restituisce lo stesso valore per ciascun id utente.
> head(df_mutated)
uid sqrt_uid hashed_uid
1 14070210 3751.028 f8c4b39403e57d85cd1698d2353954d0
2 14080815 3752.441 f8c4b39403e57d85cd1698d2353954d0
3 14091420 3753.854 f8c4b39403e57d85cd1698d2353954d0
Questo è strano per me. Senza dplyr, la funzione digest() restituisce valori diversi per input diversi. Cosa non sto capendo di dplyr?
Grazie
Meraviglioso, grazie mille. Vengo da Python/Panda e quindi ho in qualche modo pensato che mutate() funzionasse come il metodo di panda .apply(), dove la funzione passata avrebbe agito su ciascun elemento individualmente. – csaid
Bella risposta. Ho appena aggiunto l'idea di 'vdigest <- Vectorize (digest)' alla pagina di aiuto per 'digest'. –