La syntaxe exacte équivalent magrittr
à ce que vous avez écrit est:
df %>% transform(val1 = NA) %$%
inset(.,Petal.Length < 1.52,"val1","cake") %$%
inset(.,Petal.Length > 1.55 & Petal.Length <= 4.55,"val1","pie") %$%
inset(.,Petal.Length > 4.55,"val1","apple")
Ou, pour être vraiment zélés avec des alias de magrittr
:
df %>% transform(val1 = NA) %$%
inset(.,Petal.Length %>% is_less_than(1.52),"val1","cake") %$%
inset(.,Petal.Length %>% is_greater_than(1.55) & Petal.Length %>%
is_weakly_less_than(4.55),"val1","pie") %$%
inset(.,Petal.Length %>% is_greater_than(4.55),"val1","apple")
Et une variante: (! Sauf pour les tuyaux)
df %>% transform(val1 = NA) %$%
inset(.,Petal.Length %>% is_less_than(1.52),"val1","cake") %$%
inset(.,Petal.Length %>% {is_greater_than(.,1.55) & is_weakly_less_than(.,4.55)},"val1","pie") %$%
inset(.,Petal.Length %>% is_greater_than(4.55),"val1","apple")
Les deux premiers sont strictement équivalent dans la base:
df %>% transform(val1 = NA) %$%
`[<-`(.,Petal.Length < 1.52,"val1","cake") %$%
`[<-`(.,Petal.Length > 1.55 & Petal.Length <= 4.55,"val1","pie") %$%
`[<-`(.,Petal.Length > 4.55,"val1","apple")
La variante est équivalent à ceci:
df %>% transform(val1 = NA) %$%
`[<-`(.,Petal.Length < 1.52,"val1","cake") %$%
`[<-`(.,Petal.Length %>% {`>`(.,1.55) & `<=`(.,4.55)},"val1","pie") %$%
`[<-`(.,Petal.Length > 4.55,"val1","apple")
J'ai utilisé transform
parce que c'est une fonction base
tandis que mutate
est une fonction dplyr
mais ils fonctionnent de la même manière ici.
Pour une définition de tous les alias voir: ?extract
Pourquoi ne pas simplement utiliser 'couper()'? –
Pas vraiment pertinent pour le problème, mais vous n'avez pas besoin de 'which 'dans votre exemple, un vecteur de booléens fonctionne très bien. ('df $ val1 [df $ Petal.Length <1.52] <-" cake "') –