在R中聚合后命名结果data.table列

在R中聚合后命名结果data.table列,r,data.table,aggregate,R,Data.table,Aggregate,我想使用可以返回多行的函数在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,如何设置新列以该向量命名(不在下一行使用s

我想使用可以返回多行的函数在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(摘要(萼片长度),摘要(萼片宽度))),by=Species]
失败。有什么想法吗?

一个选项是
setNames

x[, setNames(as.list(c(summary(Sepal.Length), 
        summary(Sepal.Width))), myColumnNames), by = Species]

关于
x[,集合名(as.list(c(summary(Sepal.Length),summary(Sepal.Width))),myColumnNames,by=Species]
@akrun说了什么,或者你可以用
数据设置名称。table::setNames
。例如,
setnames(y,2:13,myColumnNames)
,其中
y
是您的行的结果。@akrun您的解决方案工作得很好,谢谢!请把它寄出去,这样我就可以接受它是正确的@nicola我想避免在命令之后使用
setnames()
,以避免使用
2:13
之类的索引!你是在暗示还有更多的选择吗?@GerasimosPanagiotakopoulos第二个选择是@nicola评论的
setnames