Wie würde ich über die Verwendung von mutate
gehen (meine Vermutung ist, dass ich für Standardauswertung in meinem Fall bin auf der Suche, und damit mutate_
, aber ich bin nicht ganz sicher, in diesem Punkt), wenn eine Funktion, die eine Liste von Variablennamen, wie dies akzeptiert:dplyr: Standardauswertung für mutieren mit zitierte Variablennamen
createSum = function(data, variableNames) {
data %>%
mutate_(sumvar = interp(~ sum(var, na.rm = TRUE),
var = as.name(paste(as.character(variableNames), collapse =","))))
}
Hier ist ein MWE, den die Funktion seiner Kernlogik Streifen und zeigt, was ich zu erreichen versuchen:
library(dplyr)
library(lazyeval)
# function to make random table with given column names
makeTable = function(colNames, sampleSize) {
liSample = lapply(colNames, function(week) {
sample = rnorm(sampleSize)
})
names(liSample) = as.character(colNames)
return(tbl_df(data.frame(liSample, check.names = FALSE)))
}
# create some sample data with the column name patterns required
weekDates = seq.Date(from = as.Date("2014-01-01"),
to = as.Date("2014-08-01"), by = "week")
dfTest = makeTable(weekDates, 10)
# test mutate on this table
dfTest %>%
mutate_(sumvar = interp(~ sum(var, na.rm = TRUE),
var = as.name(paste(as.character(weekDates), collapse =","))))
hier 0
Erwartete Ausgabe ist, was würde zurückgegeben werden:
rowSums(dfTest[, as.character(weekDates)])
Sie definieren 'makeTable', rufen aber 'makeDataFrame' auf. Sollen diese die gleiche Funktion haben? Es wäre hilfreich, die Ausgabe zu beschreiben, die Sie für diese Beispieleingabe erwarten (setzen Sie einen Anfangswert für die Daten ist reproduzierbar). – MrFlick
@MrFlick Danke. Der Name der Funktion wurde geändert. Es wird nichts Besonderes erwartet, nur die "Summe" aller Variablen, deren Variablennamen an die Funktion übergeben werden, nach Zeilen. Wird mit der erwarteten Ausgabe aktualisiert. – tchakravarty