Функции plyr и стандартная оценка
Я хотел бы обернуть функции plyr в свои собственные функции. Я хочу передать функции объект и переменную (без кавычек), к которой применяется функция вырезания.
x <- data.frame(time = seq(Sys.Date() - 99, Sys.Date(), 1))
dlply(x, .(week = cut(time, "1 week")), "[")
f <- function(datas, var) {
var <- deparse(substitute(var))
dlply(x, .(week = cut(var, "1 week")), "[")
}
f(x, time) # fail
Я не знаю, как использовать объект var, чтобы указать в качестве переменной его значение, а не "var" как переменную, в ddply.
В отличие от dplyr нет стандартных оценочных версий функций plyr? Я читал, что я могу использовать строки, но, например, dlply(x, .(week = cut("time", "1 week")), "[")
терпит неудачу
Я также пытался lazyeval, но я потерян в стандартной / нестандартной вселенной оценки.
1 ответ
Решение
Вы, кажется, есть ненужный deparse
в вашем коде, и вы не оцениваете var
В правильном месте. Работает со следующим.
f <- function(datas, var) {
var <- substitute(var)
dlply(datas, .(week = cut(eval(var), "1 week")), "[")
}