5

我想在 plyr 包中的**ply函数中声明行/列输出名称。ldply

例如,

我有一个列表,foo我想将其转换为 adata.frame并截断有效数字signif()

 foo <- list(var.a = runif(3), var.b = runif(3), var.c=runif(3))

我现在拥有的是

q <- ldply(foo, signif, 2)
colnames(dq)[1] <- c('id', 'q1', 'q2','q3')
rownames(dq) <- dq$id

有没有更简单的方法?

之前的两个问题询问了如何使用 plyr 重命名和使用plyr的列,但我认为我的问题有所不同。名称可以与另一个函数同时说明(或者如果我这样做正确)?这是一个有价值的功能请求吗?

4

1 回答 1

6

您必须在某处给出名称,或者在内部调用的函数上,例如

R> ldply(foo, function(l) c(a=signif(l[1], 2), b=signif(l[2], 2), 
+                           c=signif(l[3], 2)))
    .id    a    b    c
1 var.a 0.50 0.72 0.27
2 var.b 0.82 0.38 0.24
3 var.c 0.13 0.27 0.81
R> 

或者你在通话后做过。

data.frame我经常使用的另一种选择是在匿名工作函数中 显式创建一行。*dply()然后等人简单地将这些整理成一个data.frame. 这对我的口味来说足够好。

于 2010-12-02T18:26:06.957 回答