【发布时间】:2017-03-06 02:25:30
【问题描述】:
我想使用返回多行的函数在 data.table 中进行聚合,例如 summary() 或 quantile()。到目前为止我的做法是这样的:
library(data.table)
x = as.data.table(iris)
x[, as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species]
这可行,但会产生任意列名。如果我有一个长度为 12 的向量 myColumnNames,我如何设置新列以该向量命名(不使用下一行中的 setnames)?
我的“明显”尝试,x[, myColumnNames = as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species] 失败了。有什么想法吗?
【问题讨论】:
-
x[, setNames(as.list(c(summary(Sepal.Length), summary(Sepal.Width))), myColumnNames), by = Species]怎么样 -
@akrun 所说的内容,或者您可以使用
data.table::setnames设置名称。例如setnames(y,2:13,myColumnNames),其中y是您的行的结果。 -
@akrun 您的解决方案完美运行,谢谢!请张贴它,这样我就可以接受它作为正确的答案。 @nicola 我想在命令之后避免
setnames(),以避免使用像2:13这样的索引
标签: r data.table aggregate