gpt4 book ai didi

r - 如何在使用 plyr 时避免重复代码

转载 作者:行者123 更新时间:2023-12-04 10:33:08 24 4
gpt4 key购买 nike

我想为某些数据组合生成相同类型的图表。目前,我正在使用 plyr 来拆分数据并为每个组合执行一些代码。

例如,假设 dataframe 包含公司、部门、地区和收入。这是我的伪代码:

     d_ply(dataframe, .(company),  function(df) {
d_ply(df, .(department), function(df) {
d_ply(df, .(region), function(df) {
bar_chart(df$region, df$revenue)
})
bar_chart(df$department, df$revenue)
})
bar_chart(df$company, df$revenue)
})

在我的真实例子中,我需要做很多事情,代码也就10行左右。有没有办法避免在每个组合中重复代码,而不是创建一个函数并传递适当的参数?我希望有一些神奇的 plyr 把戏。

最佳答案

虚拟数据:

d <- data.frame(company=letters[1:26],
department=sample(letters[1:10],26,replace=TRUE),
region=sample(letters[1:3],26,replace=TRUE),
revenue=round(runif(26)*10000))

更新

我认为有必要对您的代码进行解释:

d_ply(dataframe, .(company),  function(df) { # by company
d_ply(df, .(department), function(df) { # by department
d_ply(df, .(region), function(df) { # by region
bar_chart(df$region, df$revenue)
# this part is essentially equal to
# d_ply(df, .(company,department,region), function(df), plot(df))
})
bar_chart(df$department, df$revenue)
# this part is essentially equal
# d_ply(df,.(company,department), function(df), fun(df))
})
bar_chart(df$company, df$revenue)
# this part is essentially equal to
# d_ply(df,.(company), function(df), fun(df))
})

我发现您的代码非常难读。它可以替换为:

some.fun <- function(df, ...) {
# ...
}

d_ply(d, .(company), function(df) some.fun(df, ...))
d_ply(d, .(company,department), function(df) some.fun(df, ...))
d_ply(d, .(company,department,region), function(df) some.fun(df, ...))

关于r - 如何在使用 plyr 时避免重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862616/

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