首页 文章

plyr功能和标准评估

提问于
浏览
1

我想将plyr函数包装在我自己的函数中 . 我想向函数传递一个对象和一个应用cut函数的变量(unquoted) .

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在ddply中将变量指定为变量而不是“var”作为变量 .

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

我也试过lazyeval,但我迷失在标准/非标准评估领域 .

1 回答

  • 1

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

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

相关问题