【问题标题】:How can I rename the output rows/cols of **ply functions from plyr?如何从 plyr 重命名 **ply 函数的输出行/列?
【发布时间】:2010-12-02 18:13:44
【问题描述】:

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

例如,

我有一个列表 foo,我想将其转换为 data.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 来重命名 rows 和 cols 使用 plyr,但我认为我的问题有所不同。名称可以与另一个函数同时说明(或者如果我这样做正确)?这是一个有价值的功能请求吗?

【问题讨论】:

    标签: r plyr


    【解决方案1】:

    你必须在某个地方给出名称,或者在内部调用的函数上,例如 in

    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。这很适合我的口味。

    【讨论】:

    • 您介意发布选项 2 的示例吗?这听起来很有用,但我并不直观地理解它是如何工作的。谢谢。
    • 在这里查看我的旧答案:stackoverflow.com/questions/3277326/…,一般来说,尝试搜索“[r] someterm”形式,以在 StackOverflow 上的 R 标签中查找“someterm”。我刚刚为ddply 做了,前两个点击是赢家。
    • 谢谢。我没想过要搜索类似的答案。
    猜你喜欢
    • 2010-11-26
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多