1

我想将 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,但我迷失在标准/非标准评估领域。

4

1 回答 1

1

您的代码中似乎有不必要deparse的内容,并且您没有var在正确的位置进行评估。它适用于以下内容。

f <- function(datas, var) {
  var <- substitute(var)
  dlply(datas, .(week = cut(eval(var), "1 week")), "[")
}
于 2015-06-25T10:29:40.433 回答