gpt4 book ai didi

r - 如何使用dplyr复制使用自定义函数的ddply行为?

转载 作者:行者123 更新时间:2023-12-03 08:30:06 26 4
gpt4 key购买 nike

我正在尝试将所有plyr调用替换为dplyr。仍然存在一些障碍,其中之一是group_by函数。我想象它的行为与第二个ddply参数相同,并根据我列出的分组变量进行拆分,应用和合并。但是事实并非如此。这是一个比较简单的例子。

让我们定义一个愚蠢的功能

mm <- function(x) return(x[1:5, ])

现在,我们可以像这样在 iris数据集中拆分物种并将此功能应用于每个片段。
ddply(iris, .(Species), mm)

这按预期工作。但是,当我对 dplyr尝试相同时,它无法按预期工作。
iris %>% group_by(Species) %>% mm

我究竟做错了什么?

最佳答案

?do所示,您可以在表达式中引用带有.的组。以下将复制您的ddply输出:

iris %>% group_by(Species) %>% do(.[1:5, ])

# Source: local data frame [15 x 5]
# Groups: Species
#
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 7.0 3.2 4.7 1.4 versicolor
# 7 6.4 3.2 4.5 1.5 versicolor
# 8 6.9 3.1 4.9 1.5 versicolor
# 9 5.5 2.3 4.0 1.3 versicolor
# 10 6.5 2.8 4.6 1.5 versicolor
# 11 6.3 3.3 6.0 2.5 virginica
# 12 5.8 2.7 5.1 1.9 virginica
# 13 7.1 3.0 5.9 2.1 virginica
# 14 6.3 2.9 5.6 1.8 virginica
# 15 6.5 3.0 5.8 2.2 virginica

更一般而言,要将自定义函数应用于具有 dplyr的组,可以执行以下操作(感谢@docendodiscimus):
iris %>% group_by(Species) %>% do(mm(.))

关于r - 如何使用dplyr复制使用自定义函数的ddply行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24133356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com