2017-07-13 4 views
3

Ich habe dplyr (jetzt 0.7.1) aktualisiert und viel meiner alten Code funktioniert nicht, da mutate_each veraltet ist. Ich benutze so etwas (Code unten) mit muate_each mit dem Spaltenindex. Ich würde das auf Hunderten von Spalten tun. Und ich kann einfach nicht herausfinden, wie man das Argument vars korrekt mit mutate_at verwendet. Alle Beispiele, die ich gesehen habe, haben Spaltennamen verwendet ... was ich nicht tun möchte. Ich bin mir sicher, dass es eine einfache Antwort ist, aber ich habe zu viel Zeit damit verbracht, es herauszufinden, und würde mich sehr über Hilfe freuen.dplyr 0.5.0 mutiere mit Spaltenindex

data<-data.frame(numbers=1:10, morenumbers=11:20) 
change<-function(x) ifelse(x>10, 1, 2) 
newdata<-data%>%mutate_each(funs(change), 1:2) 

Wenn ich versuche:

newdata<-data%>%mutate_at(funs(change), vars(1:2)) 

Oder auch dies:

newdata<-data%>%mutate_at(funs(change), vars(numbers, morenumbers))  

ich folgende Fehler

Error: `.vars` must be a character/numeric vector or a `vars()` object, 
not list 
+0

Beachten Sie, dass "mutate_all" genau genommen der Ersatz von "mutate_each" ist. Außerdem gibt es seit einiger Zeit eine Verwarnungswarnung. – Axeman

Antwort

4

Der neue Prototyp von mutate_at erhalten ist:

mutate_at(.tbl, .vars, .funs, ..., .cols = NULL) 

Beachten Sie, dass die .vars das erste Argument jetzt ist. Also, entweder Sie spezifizieren .vars explizit oder ändern die Reihenfolge.

newdata <- data %>% mutate_at(funs(change), .vars = vars(1:2)) 
# OR 
newdata <- data %>% mutate_at(vars(1:2), funs(change)) 

    numbers morenumbers 
1  2   1 
2  2   1 
3  2   1 
4  2   1 
5  2   1 
6  2   1 
7  2   1 
8  2   1 
9  2   1 
10  2   1 
+0

Ich neu es wäre eine einfache Sache, die ich vermisst wurde. Ich danke dir sehr. Ich habe eine Frist und begann in Panik zu geraten! –