【发布时间】:2016-02-11 18:35:33
【问题描述】:
假设我想创建一个从 R 中的 data.table 计算摘要数据集的函数,并且我希望能够以编程方式传递新计算变量的名称。
例如:
library(data.table)
# generate some fake data
set.seed(919)
dt <- data.table(x = rnorm(50), by.var = rep(c("a", "b"), 25))
dt[, list(group.means = mean(x)), by = "by.var"] # This is what I want
# But I want to do in a function, so I can do it repeatedly:
groupMeans <- function(out.var, by.var, dat = dt) {
return(dat[, list(out.var = mean(x)), by = by.var]) # doesn't work
}
groupMeans("group.means", "by.var") # out.var should be "group.means"
我该怎么做?
【问题讨论】:
-
我会使用
dat[, setNames(list(mean(x)), out.var), by = by.var] -
@docendodiscimus 谢谢。这就是我首先尝试的。它给了我错误:
Error in setnames(list(mean(x)), out.var) : x is not a data.table or data.frame. -
不,我使用的是来自 base R 的
setNames,而不是来自 data.table 的setnames -
啊哈!这样可行!看起来我很粗心,错误地使用了
setnames。谢谢! -
自己回答吧——你已经尝试了几乎正确的方法
标签: r data.table