【问题标题】:How to handle "by" class returned by using by() function in R如何处理在 R 中使用 by() 函数返回的“by”类
【发布时间】:2012-01-26 20:48:02
【问题描述】:

我在 R 中使用 by() 函数对因子的所有子集运行 A FUN()。 FUN() 返回两个数字作为其返回值。 by() 函数返回一个“by”类,如下所示:

--------------------------------------------------------------------------------------- 
: 98012
[1] 25.00  0.84
--------------------------------------------------------------------------------------- 
: 98301
[1] 5.0 0.6
--------------------------------------------------------------------------------------- 

我想把这个“by”类转换成一个普通的data.frame,这样我就可以分别使用两个返回的数字。但是,这样的“by”类不能转换为data.frame。有什么想法吗?

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    你可以这样做:

    df <- do.call(cbind.data.frame, yourByResult)
    

    请注意,您需要指定cbind.data.frame,否则,通过使用简单的cbind,结果将是matrix,而不是data.frame

    【讨论】:

    • digEmAll,感谢您的建议。我发现了另一个问题link,它给出了使用 do.call() 的详细说明
    【解决方案2】:

    我想说不要使用by

    改为使用 plyr 包中的ddply 语法

    ddply(data.frame,splitting-variable,f())
    

    关键是你的函数需要接受一个data.frame并返回一个data.frame。

    【讨论】:

    • 贾斯汀,我检查了 ddply()。是的。使用这个工具可以提供一个简洁的解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2014-04-26
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多