Ich möchte verwenden dplyr::mutate()
, um mehrere neue Spalten in einem Datenrahmen zu erstellen. Die Spaltennamen und deren Inhalt sollten dynamisch generiert werden.
Beispieldaten von Iris:
library(dplyr)
iris <- tbl_df(iris)
Ich habe eine Funktion erstellt, um meine neuen Spalten aus dem zu mutieren Petal.Width
Variablen :
multipetal <- function(df, n) {
varname <- paste("petal", n , sep=".")
df <- mutate(df, varname = Petal.Width * n) ## problem arises here
df
}
Jetzt erstelle ich eine Schleife, um meine Spalten zu erstellen:
for(i in 2:5) {
iris <- multipetal(df=iris, n=i)
}
Da mutate jedoch glaubt, dass varname ein Literalvariablenname ist, erstellt die Schleife nur eine neue Variable (als varname bezeichnet) anstelle von vier (als petal.2 - petal.5 bezeichnet).
Wie kann ich mutate()
meinen dynamischen Namen als Variablennamen verwenden?
dplyr
hat eine ganze Vignette über nicht standardmäßige Bewertung
mutate_
, und aus den anderen Funktionen ist nicht ersichtlich, wie sie verwendet werden soll.