jak pójdę temat korzystania mutate
(moje przypuszczenie, że szukam standardowej oceny w moim przypadku, a więc mutate_
, ale nie jestem do końca pewny siebie w tej kwestii) przy użyciu funkcji, która akceptuje listę nazw zmiennych, takich jak ten:dplyr: średnia ocena dla mutować z cytowanych nazw zmiennych
createSum = function(data, variableNames) {
data %>%
mutate_(sumvar = interp(~ sum(var, na.rm = TRUE),
var = as.name(paste(as.character(variableNames), collapse =","))))
}
Oto MWE że paski funkcję do swojej podstawowej logiki i pokazuje, co usiłuję osiągnąć:
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 =","))))
Oczekiwany wyjście tutaj jest to, co będzie zwrócony przez:
rowSums(dfTest[, as.character(weekDates)])
Definiując 'makeTable', a następnie wywołaj 'makeDataFrame'. Czy to ma być ta sama funkcja? Pomocne byłoby opisanie oczekiwanego wyniku dla tego przykładowego wejścia (ustawienie materiału wyjściowego na dane jest powtarzalne). – MrFlick
@MrFlick Dzięki. Zmieniono nazwę funkcji. Nic dziwnego się nie spodziewa, po prostu "suma" wszystkich zmiennych, których nazwy zmiennych są przekazywane do funkcji, według wiersza. Aktualizacja z oczekiwanym wynikiem. – tchakravarty