функции 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")), "[") не работает

Я тоже пробовал лазить, но я потерялся во вселенной стандартных / нестандартных оценок.


person Julien Navarre    schedule 25.06.2015    source источник


Ответы (1)


Кажется, в вашем коде есть ненужный deparse, и вы не оцениваете var в нужном месте. Он работает со следующим.

f <- function(datas, var) {
  var <- substitute(var)
  dlply(datas, .(week = cut(eval(var), "1 week")), "[")
}
person shadow    schedule 25.06.2015