Функции 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")), "[")
}
Другие вопросы по тегам