有没有办法将自定义名称分配给.id
结果中通常名为ldply
的列?
> ldply(setNames(1:3, 1:3), function(i) data.frame(j=1/i))
.id j
1 1 1.0000000
2 2 0.5000000
3 3 0.3333333
我知道我可以在结果上调用rename
,但我想在一次通话中这样做。有什么建议吗?
请注意adply
遇到类似的问题:
> adply(as.array(setNames(1:3, 1:3)), 1, function(i) data.frame(j=1/i))
X1 j
1 1 1.0000000
2 2 0.5000000
3 3 0.3333333
另一个related question解决了重命名“数据”列的问题,但答案也未能为.id
列提供解决方案。
答案 0 :(得分:4)
我有proposed和implementation,让我们看看它是否成为官方plyr
。基本上,新参数.idname
允许指定.id
列的名称,并可选择通过传递NULL
来完全删除它:
> ldply(setNames(1:3, 1:3), function(i) data.frame(j=1/i), .idname='i')
i j
1 1 1.0000000
2 2 0.5000000
3 3 0.3333333
。使用
安装调整后的版本library(devtools)
install_github('plyr', 'krlmlr', ref='140-142-id')
编辑:现在可以在CRAN的plyr
1.8.1中使用:
> ldply(setNames(nm=1:3), function(i) data.frame(j=1/i), .id='i')
答案 1 :(得分:3)
使用setNames似乎很舒服,因此您可以将“j”和“newname”分配移动到方便的包装器中。
setNames( ldply(setNames(1:3, 1:3), function(i) data.frame(1/i)) , c("newname", "j") )
newname j
1 1 1.0000000
2 2 0.5000000
3 3 0.3333333