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")), "[")
}
我想在我自己的函数中包装 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")), "[")
}