Dear Deepayan,

I see your point. I must admit that I was considering only formula's as x 
argument for the trellis plots. What I would really like to have in your 
example, would be

barchart.matrix <- function (x, data = NULL, ...) {
  foo <- barchart(as.table(x), data, ...)
  foo$call <- match.call()
  foo$call[[1]] <- quote(barchart)
  foo
}

> summary(barchart(VADeaths))

Call:
barchart(x = VADeaths)

Number of observations:
[1] 20

> summary(barchart(VADeaths))$call$x
VADeaths

That's nice both for cosmetic and programming. However that would require 
changes to all the methods for trellis functions and it is also possible 
that I'm missing something else, so I'll understand if you decide not to 
implement this.

Thanks in advance anyway
Vincenzo

-----------------------------------------------------------------------------------
Vincenzo Luca Di Iorio
Consultant PME User support - GSK R&D Limited
-----------------------------------------------------------------------------------




"Deepayan Sarkar" <deepayan.sar...@gmail.com> 
14-Aug-2009 21:15
 
To
vincenzo.2.di-io...@gsk.com
cc
"R help" <r-h...@stat.math.ethz.ch>
Subject
Re: [R] Retrieving x argument name from a trellis object






On Fri, Aug 14, 2009 at 11:04 AM, <vincenzo.2.di-io...@gsk.com> wrote:
>
> Dear Deepayan,
>
> First of all I'm sorry for resuming such an old thread, but I think I 
may
> have found an easy fix.
>
> Replacing in "xyplot.formula" (and similar internal functions for the 
other
> Trellis plots)
>
>     foo$call <- sys.call(sys.parent())
>     foo$call[[1]] <- quote(xyplot)
>
> with
>
>     foo$call <- match.call()
>     foo$call[[1]] <- quote(xyplot)
>
> will restore the correct behaviour while keeping the new better value 
for
> the call component of a trellis object introduced in lattice version 
0.16 or
> higher, that if I understand correctly depends on the second (unchanged)
> line.

But consider this: we currently get

> vad <- as.table(VADeaths)
> summary(barchart(vad))

Call:
barchart(vad)

Number of observations:
[1] 20


> summary(barchart(VADeaths))

Call:
barchart(as.table(x), data, ...)

Number of observations:
[1] 20

Not perfect, but not too bad either, considering that neither
barchart.matrix() nor barchart.table() do any manipulation of the
$call component.

If I make your suggested change in barchart.formula, this is what I get:

> summary(barchart(VADeaths))

Call:
barchart(x = as.formula(form), data = data, groups = eval(groups),
    origin = origin, stack = stack)

Number of observations:
[1] 20


Which would you rather have?


The point remains that the call component is meant for cosmetic use.
If you can convince me that having the other form is important, I will
be happy to include it in the "trellis" object (under a different
name, perhaps "mcall").

-Deepayan

>
> Best regards
> Vincenzo
>
> 
-----------------------------------------------------------------------------------
> Vincenzo Luca Di Iorio
> Consultant PME User support - GSK R&D Limited
> 
-----------------------------------------------------------------------------------
>
>
>
> "Deepayan Sarkar" <deepayan.sar...@gmail.com>
>
> 12-Nov-2008 07:04
>
>
> To
> "vincenzo.2.di-io...@gsk.com" <vincenzo.2.di-io...@gsk.com>
> cc
> "R help" <r-h...@stat.math.ethz.ch>
> Subject
> Re: [R] Retrieving x argument name from a trellis object in R 2.8.0
>
>
>
>
> On 11/11/08, vincenzo.2.di-io...@gsk.com <vincenzo.2.di-io...@gsk.com>
> wrote:
>> Dear all,
>>
>>  let consider the following function:
>>
>>  Fun1 <- function() {
>>   library(lattice)
>>   plot1 <- 1:10~1:10
>>   pl1 <- xyplot(plot1)
>>   return(pl1$call$x)
>>  }
>>
>>  In R 2.5.0 (or older version) we have
>>
>>  > Fun1()
>>  plot1
>>
>>  but starting from R 2.5.1 until the latest R 2.8.0  we obtain instead
>>
>>  > Fun1()
>>  NULL
>>
>>  because pl1$call seems to be equal to xyplot() without arguments.
>>
>>  Something like xyplot(x=plot1) doesn?t work either. Again we have that
>>  pl1$call is equal to xyplot() without arguments
>>
>>  The situation is slightly different if we call the xyplot in the 
global
>>  environment:
>>
>>  > plot1 <- 1:10~1:10
>>  > pl1 <- xyplot(plot1)
>>  > pl2 <- xyplot(x=plot1)
>>
>>  then we have
>>
>>  > pl1$call
>>  xyplot(plot1)
>>  > pl1$call$x
>>  NULL
>>
>>  but at least
>>
>>  > pl2$call
>>  xyplot(x = plot1)
>>  > pl2$call$x
>>  plot1
>
> This is what I would have expected.
>
> I'm surprised at the odd behaviour when xyplot() is called inside a
> function, which is probably caused by my lack of understanding of how
> sys.call() works. However, the 'call' component is provided mainly for
> cosmetic reasons, and was never intended to be used programmatically.
> Why do you need this?
>
> -Deepayan
>
>>  Someone knows if in R 2.8.0 it is possible to retrieve the name of the 
x
>>  argument (i.e. plot1) directly from an object of class ?trellis? when 
the
>>  corresponding lattice function (e.g. xyplot) is inside another 
function
>>  (e.g. Fun1)?
>>
>>  Thanks in advance
>>  Vincenzo
>>
>>
>> 
 
-----------------------------------------------------------------------------------
>>  Vincenzo Luca Di Iorio
>>  Consultant PME User support - GSK R&D Limited
>>
>> 
 
-----------------------------------------------------------------------------------
>>
>>         [[alternative HTML version deleted]]
>>
>>  ______________________________________________
>>  R-help@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.
>>
>
>
>



        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to