我想总结 data.table 中的几个变量,以宽格式输出,可能作为每个变量的列表输出。由于其他几种方法不起作用,我尝试进行外部 lapply,将变量名称作为字符向量给出。我想使用 with=FALSE 传递这些。
carsx=as.data.table(cars)
lapply( list(speed="speed",dist= "dist"), #error object 'ansvals' not found
function(x) carsx[,list(mean(x), min(x), max(x) ), with=FALSE ] )
由于这不起作用,我尝试了更简单的方法而不使用 lapply。
carsx[,list(mean("speed"), min("speed"), max("speed") ), with=FALSE ] #error object 'ansvals' not found
这也行不通。有什么办法可以做这样的事情吗?这种“与”的行为是想要的吗? (我知道?data.table
提到仅选择列,但就我而言,能够转换它们也很有用)
当 with=FALSE 时,j 是要选择的名称或位置的向量,类似于 data.frame。 with=FALSE 在 data.table 中通常用于动态选择列。
编辑
我的目标是针对不同变量以宽格式获取每组的摘要。
我尝试扩展以下仅适用于一个变量的变量列表。
carsx[,list(mean(speed), min(speed), max(speed) ) ,by=(dist>50)
遗憾的是,SO不允许我发布我的其他问题。我在那里描述了我想要一个类似于以下内容的输出:
lapply( list(speed="speed",dist= "dist"),
function(x) do.call("as.data.frame", aggregate(cars[,x], list(class=cars$dist>50), FUN=summary) ) )
预期输出类似于:
$speed
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25
$dist
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25