I have the following code snippet:
require(lattice)
f.barchart <- function(...) {
barchart(...,
panel = function(x, y, ...) {
panel.barchart(x, y, ...)
}
)
}
x <- data.frame(a = c(1,1,2,2), b = c(1,2,3,4), c = c(1,2,2,1))
f.barchart(a ~ b, data = x, groups = c)
Which results in the following error being thrown:
..3 used in an incorrect context, no ... to look in
When I use the following definition:
f.barchart <- function(...) {
substitute(barchart(...,
panel = function(x, y, ...) {
panel.barchart(x, y, ...)
}
))
}
I get:
barchart(a ~ b, data = x, groups = c,
panel = function(x, y, ...) {
panel.barchart(x, y, a ~ b, data = x, groups = c)
})
I'm not sure if this is the cause of above error but this would mean
that the ellipsis in panel.barchart gets wrongly expanded with the
contents of the arguments given to f.barchart and not the panel
function.
Is there a way to avoid this problem? How can I make the function
work?
I use R 2.10.1 @ win32.
Regards,
Tom
______________________________________________
R-h...@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
> require(lattice)
> f.barchart <- function(...) {
> barchart(...,
> panel = function(x, y, ...) {
> panel.barchart(x, y, ...)
> }
> )
> }
>
> x <- data.frame(a = c(1,1,2,2), b = c(1,2,3,4), c = c(1,2,2,1))
> f.barchart(a ~ b, data = x, groups = c)
>
> Which results in the following error being thrown:
>
> ..3 used in an incorrect context, no ... to look in
Regards,
Example:
f.barchart <- function(...) {
ccall <- match.call()
ccall[[1]] <- quote(barchart)
ccall$panel <- function(x, y, ...) {
panel.barchart(x, y, ...)
}
eval.parent(ccall)
}
x <- data.frame(a = c(1,1,2,2), b = c(1,2,3,4), c = c(1,2,2,1))
f.barchart(a ~ b, data = x, groups = c)
It is also good practice to update the $call component of the trellis
object to reflect your high-level function:
ans <- eval.parent(ccall)
ans$call <- match.call()
ans
--
Felix Andrews / 安福立
Postdoctoral Fellow
Integrated Catchment Assessment and Management (iCAM) Centre
Fenner School of Environment and Society [Bldg 48a]
The Australian National University
Canberra ACT 0200 Australia
M: +61 410 400 963
T: + 61 2 6125 4670
E: felix....@anu.edu.au
CRICOS Provider No. 00120C
--
http://www.neurofractal.org/felix/