Recherche…


Introduction

Dplyr et de nombreuses bibliothèques modernes de R utilisent l'évaluation non standard (NSE) pour la programmation interactive et l'évaluation standard (SE) pour la programmation 1 .

Par exemple, la fonction summarise() utilise une évaluation non standard mais s'appuie sur le summarise_() qui utilise l'évaluation standard.

La bibliothèque paresseuse facilite la conversion de la fonction d’évaluation standard en fonctions NSE.

Exemples avec des verbes standard dplyr

Les fonctions NSE doivent être utilisées dans la programmation interactive. Cependant, lors du développement de nouvelles fonctions dans un nouveau package, il est préférable d’utiliser la version SE.

Chargez dplyr et lazyeval:

library(dplyr)
library(lazyeval)

Filtration

Version NSE

filter(mtcars, cyl == 8)
filter(mtcars, cyl < 6)
filter(mtcars, cyl < 6 & vs == 1)

Version SE (à utiliser lors de la programmation de fonctions dans un nouveau package)

filter_(mtcars, .dots = list(~ cyl == 8))
filter_(mtcars, .dots = list(~ cyl < 6))
filter_(mtcars, .dots = list(~ cyl < 6, ~ vs == 1))

Résumer

Version NSE

summarise(mtcars,  mean(disp))
summarise(mtcars,  mean_disp = mean(disp))

Version SE

summarise_(mtcars, .dots = lazyeval::interp(~ mean(x), x = quote(disp)))
summarise_(mtcars, .dots = setNames(list(lazyeval::interp(~ mean(x), x = quote(disp))), "mean_disp"))
summarise_(mtcars, .dots = list("mean_disp" = lazyeval::interp(~ mean(x), x = quote(disp))))

Subir une mutation

Version NSE

mutate(mtcars, displ_l = disp / 61.0237)

Version SE

mutate_(
    .data = mtcars, 
    .dots = list(
        "displ_l" = lazyeval::interp(
                        ~ x / 61.0237, x = quote(disp)
            )
         )
)


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow