ich die folgende Berechnung unter Verwendung von dplyr
parametrisieren möchten, die mit mehr als einem Wert von Sepal.Width
zugeordnet, die Werte von Sepal.Length
findet:Pass Argumente dplyr Funktionen
library(dplyr)
iris %>%
group_by(Sepal.Length) %>%
summarise(n.uniq=n_distinct(Sepal.Width)) %>%
filter(n.uniq > 1)
Normalerweise so etwas wie dieses würde ich schreiben:
not.uniq.per.group <- function(data, group.var, uniq.var) {
iris %>%
group_by(group.var) %>%
summarise(n.uniq=n_distinct(uniq.var)) %>%
filter(n.uniq > 1)
}
Dieser Ansatz löst jedoch Fehler aus, da dplyr
non-standard evaluation verwendet. Wie sollte diese Funktion geschrieben werden?
Aus Gründen der Stil, würde ich davon abraten, den Punkt in Namen in modernen R, außer in S3-Generika verwenden. Es ist furchtbar verwirrend. Die Namenskonvention, die unter anderem von 'dplyr' verwendet wird, ist viel schöner:' names_with_undscores'. –
Ich bin mir bewusst, dass [Hadley Wickhams Styleguide] (http://adv-r.had.co.nz/Style.html) die Unterstrichnotation empfiehlt, aber der [Google R Style Guide] (https: // google -styleguide.googlecode.com/svn/trunk/Rguide.xml) fördert den Zeitraum (obwohl nicht für Funktionen, die ich hier getan habe). In anderen Sprachen wird die Periode für den Mitgliederzugriff verwendet (zB 'myArray.length' in Javascript), gibt es einen weiteren Konflikt in R? – asnr
Google Style Guides sind oft schrecklich. In diesem speziellen Fall besteht das Problem darin, dass es zu Mehrdeutigkeiten mit S3-Methoden führt: ist 'some.class.method' eine Methode' some' der Klasse 'class.method' oder ist es eine Methode' some.class' der Klasse ' Methode? Außerdem führt dies zu inkonsistenten Namen, wenn Teile Ihres Codes in C (++) implementiert werden, da dies keine Punkte in Namen unterstützt, was eine Zuordnung der Backend-Funktionsnamen zu verschiedenen R-Namen erfordert. –