【发布时间】:2012-05-27 08:37:16
【问题描述】:
我遇到了data.table 的一个小 R 问题。非常感谢您的帮助。我该怎么做:
getResult <- function(dt, expr, gby) {
e <- substitute(expr)
b <- substitute(gby)
return(dt[,eval(e),by=b])
}
v1 <- "Sepal.Length"
v2 <- "Species"
dt <- data.table(iris)
rDT <- getResult(dt, sum(v1, na.rm=TRUE), v2)
我收到以下错误:
sum(v1, na.rm = TRUE) 中的错误:无效的“类型”(字符) 论据
现在,v1 和 v2 都作为字符变量从其他程序传递,所以我不能这样做 v1<- quote(Sepal.Length) 这似乎有效。
【问题讨论】:
-
这可能会让你走上正轨:
dt[, sum(get(v1), na.rm=TRUE), by=v2]或者如果你灵活的话,可以建议一种替代方法。 -
谢谢。它起作用了,发生了什么?函数获取名为 v1 的对象。替换函数对这个表达式做了什么?它没有做任何事情并试图用字符值“Sepal.Length”替换v1吗?
标签: r parameter-passing data.table