plyr函数和标准评估

plyr functions and standard evaluation

我想在我自己的函数中包装 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

我不知道如何在 ddply 中使用对象 var 将其值指定为变量而不是 "var" 作为变量。

与 dplyr 不同,没有 plyr 函数的标准评估版本? 我读到我可以使用字符串,但是例如 dlply(x, .(week = cut("time", "1 week")), "[") 失败

我也试过lazyeval,但我迷失在standard/non标准评估领域。

您的代码中似乎有一个不必要的 deparse,而且您没有在正确的位置计算 var。它适用于以下内容。

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