Abhängig von einer Bedingung, muss ich wählen zwischen dplyr :: n und einer beliebigen Funktion (sagen wir zum Beispiel eine Funktion, die 2 zurückgibt, welches Argument auch immer gegeben ist).Warum die Zuweisung von dplyrs n() - Funktion macht es nicht ausführbar innerhalb zusammenfassen und mutieren?
Wenn ich Folgendes tun:
new_n <- dplyr::n
new_n <- ifelse(is.null(k), new_n, my_new_n)
data <- data %>% group_by_(z) %>% mutate_(n = new_n)
Wenn zum Beispiel dplyr :: n zugewiesen wird ich den Fehler new_n
Error: This function should not be called directly
, während ich es erwartet hatte, normal zu arbeiten, wie es wäre, Wenn ich geschrieben hätte
data <- data %>% group_by_(z) %>% mutate_(n = n())
Warum passiert das? Gibt es eine Arbeit? Grundsätzlich muss ich der Variablen n einen anderen Wert zuweisen, abhängig von k, aber ich kann den Teil des Codes, an dem die Mutation ausgeführt wird, aufgrund der Projektanforderungen nicht ändern.
EDIT: hinzugefügt einfaches Beispiel. Zum Beispiel, wenn Sie versuchen,
if (require("nycflights13")) {
carriers <- group_by(flights, carrier)
summarise(carriers, n())
mutate(carriers, n = n())
filter(carriers, n() < 100)
}
alles funktioniert gut, aber wenn Sie
new_n <- n
summarise(carriers, new_n())
der Code nicht ausgeführt werden versuchen zu laufen arbeiten und Sie werden die Fehler oben, obwohl bekommen, was Ich habe gerade n zu new_n zugewiesen.
wo ist 'data' verwenden? – akrun
@akrun Ich habe keine Daten hinzugefügt, aber Sie können versuchen, eine "andere Version" meines Problems mit dem Beispiel im Abschnitt "n help" auszuführen. Wenn Sie new_n <- n definieren und dann das Beispiel mit new_n() anstelle von n() ausführen, erhalten Sie denselben Fehler und dasselbe Problem, das ich zu erklären versuche. – mickkk
@akrun Ich habe ein funktionierendes Beispiel hinzugefügt – mickkk