在R中聚合后命名结果data.table列
我想使用可以返回多行的函数在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
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