apply a Positioning Method to every group. works like ddply from plyr package, but the grouping column is always called groups, and the Positioning Method is not necessarily a function (but can be).
gapply <- function
### apply a Positioning Method to every group. works like ddply from
### plyr package, but the grouping column is always called groups, and
### the Positioning Method is not necessarily a function (but can be).
(d,
### data frame with column groups.
method,
### Positioning Method to apply to every group separately.
...,
### additional arguments, passed to Positioning Methods.
groups="groups"
### can also be useful for piece column.
){
stopifnot(is.data.frame(d))
dfs <- split(d,as.character(d[[groups]]))
f <- function(d,...){
res <- apply.method(method,d,columns.to.check=c("x","y"),...)
res[[groups]] <- d[[groups]][1]
res
}
results <- lapply(dfs,f,...)
if(any(!sapply(results,is.data.frame))){
print(results)
stop("Positioning Method did not return data.frame")
}
do.call(rbind,results)
### data frame of results after applying FUN to each group in d.
}
| Please contact Toby Dylan Hocking if you are using directlabels or have ideas to contribute, thanks! |
| Documentation website generated from source code version 2021.2.24 (git revision bb6db07 Mon, 14 Jun 2021 22:38:45 +0530) using inlinedocs. |
| validate |