【发布时间】:2015-02-11 06:06:30
【问题描述】:
这很可能是其中一个或两个的副本,如果这样道歉,我想这将使它成为一个突出的紧迫问题。
pass grouped dataframe to own function in dplyr
使用 plyr one 可以运行如下:
ddply(mtcars, .(cyl), function(x) table(x$am))
并获得不错的输出
> ddply(mtcars, .(cyl), function(x) table(x$am))
cyl 0 1
1 4 3 8
2 6 4 3
3 8 12 2
我仍然不明白为什么ddply(mtcars, .(cyl), table(am)) 不起作用,但没关系。
有没有办法在dplyr中实现以上功能?
mtcars %>%
group_by(cyl) %>%
function(x) table(x$am)
没有达到相同的结果。
更新的问题(出于历史目的保留上述内容)。
事后看来,虽然以上是我不时想做的事情,但我更想获得这样的功能:
blah <- function(x) {
x$position <- 1:nrow(x)
x$count <- nrow(x)
return(x)
}
ddply(mtcars, .(cyl,am), function(x) blah(x))
【问题讨论】:
-
我认为
do()是您问题的一般答案,但是这个例子很痛苦,因为table不返回数据框,也不是那么容易转换为你想要的数据框。 -
这只是一个通用的、可重复的示例,用于编码目的。我想把它推到桌子之外。
-
已经更新了这个问题,考虑到表格的细微差别,这使得它有所不同,但仍然达到了相同的宽泛点。
-
正如 Gregor 所说,在这种情况下您可以使用
do。使用blah函数,它将是mtcars %>% group_by(cyl, am) %>% do(blah(.))
标签: r