R Language
Nichtstandardmäßige Bewertung und Standardbewertung
Suche…
Einführung
Dplyr und viele moderne Bibliotheken in R verwenden Nicht-Standard-Bewertung (NSE) für die interaktive Programmierung und Standard-Bewertung (SE) für die Programmierung 1 .
Zum Beispiel kann das summarise()
Funktion Verwendung nicht-Standardauswertung sondern verlässt sich auf die summarise_()
die Standardauswertung verwendet.
Die Lazyeval-Bibliothek macht es einfach, Standardauswertungsfunktionen in NSE-Funktionen umzuwandeln.
Beispiele mit Standard-Dplyr-Verben
Bei der interaktiven Programmierung sollten NSE-Funktionen verwendet werden. Wenn Sie jedoch neue Funktionen in einem neuen Paket entwickeln, sollten Sie die SE-Version verwenden.
Laden Sie Dplyr und Lazyeval:
library(dplyr)
library(lazyeval)
Filterung
NSE-Version
filter(mtcars, cyl == 8)
filter(mtcars, cyl < 6)
filter(mtcars, cyl < 6 & vs == 1)
SE-Version (zur Verwendung bei der Programmierung von Funktionen in einem neuen Paket)
filter_(mtcars, .dots = list(~ cyl == 8))
filter_(mtcars, .dots = list(~ cyl < 6))
filter_(mtcars, .dots = list(~ cyl < 6, ~ vs == 1))
Zusammenfassen
NSE-Version
summarise(mtcars, mean(disp))
summarise(mtcars, mean_disp = mean(disp))
SE-Version
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))))
Mutieren
NSE-Version
mutate(mtcars, displ_l = disp / 61.0237)
SE-Version
mutate_(
.data = mtcars,
.dots = list(
"displ_l" = lazyeval::interp(
~ x / 61.0237, x = quote(disp)
)
)
)