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)
            )
         )
)


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow