[R] calling plot

Spencer Graves spencer.graves at effectivedefense.org
Tue Feb 9 17:33:01 CET 2016



On 2/9/2016 9:51 AM, Bert Gunter wrote:
> Spencer, et. al.:
>
> As I suspected, my previous "solution" was pretty stupid. Here is, I
> think, the "right" way to
>   go about it:
>
>   plotxy <- function(x,...){
>     mcall <- match.call(expand.dots=FALSE)
>     mcall[[1]]<- plot.default
>     eval(mcall)
>   }


Hi, Bert, et al.:  I couldn't get that to work, either:


 > XY <- data.frame(x1=1:3, y1=4:6)
 > plotxy(y1~x1, XY, xlim=c(0, max(x1)))

  Error in eval(expr, envir, enclos) : object 'y1' not found


       However, my original function inside "with" worked, but Bert's 
suggestion didn't:


 > plot.sg <- function(x, ...){
+ plot(x, ...)
+ }
 > with(XY, plot.sg(y1~x1, xlim=c(0, max(x1))))
 > # worked, but "plotxy" with match.call didn't:
 > with(XY, plotxy(y1~x1, xlim=c(0, max(x1))))

  Error in eval(expr, envir, enclos) : object 'y1' not found

 > sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.2 (El Capitan)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods base

loaded via a namespace (and not attached):
[1] tools_3.2.3


       I don't understand this, but "with" is acceptable for my current 
needs.


       Thanks again to Bert & Jeff.


       Spencer Graves
>
> Best,
> Bert
>
>
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Mon, Feb 8, 2016 at 8:10 PM, Spencer Graves
> <spencer.graves at effectivedefense.org> wrote:
>> Hi, Jeff et al.:
>>
>>
>> On 2/8/2016 9:52 PM, Jeff Newmiller wrote:
>>> plotxy(y1~x1, XY, xlim=c(0, max(XY$x1)))
>>
>>         Yes, Thanks.
>>
>>
>>         Is there a way to do this from within "plotxy", so I can call
>> "plotxy" as I call "plot"?
>>
>>
>>         Thanks,
>>         Spencer
>>
>>
>>> --
>>> Sent from my phone. Please excuse my brevity.
>>>
>>> On February 8, 2016 7:17:57 PM PST, Spencer Graves
>>> <spencer.graves at effectivedefense.org> wrote:
>>>
>>>      I'm getting an interesting error:
>>>
>>>
>>>          plotxy <- function(x, ...){
>>>
>>>      +   plot(x, ...)
>>>      + }
>>>
>>>          XY <- data.frame(x1=1:3, y1=4:6) plotxy(y1~x1, XY, xlim=c(0,
>>>          max(x1)))
>>>
>>>         Show Traceback
>>>
>>>         Rerun with Debug
>>>         Error in eval(expr, envir, enclos) : object 'x1' not found
>>>
>>>
>>>              The following work:
>>>
>>>
>>>      plotxy(y1~x1, XY)
>>>      plot(y1~x1, XY, xlim=c(0, max(x1)))
>>>
>>>
>>>              Within "plotxy", R can't find "x1" to compute "xlim".  Is there a
>>>      way I can make x1 available to xlim?
>>>
>>>
>>>              Thanks,
>>>              Spencer
>>>
>>>      ------------------------------------------------------------------------
>>>
>>>      R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>      https://stat.ethz.ch/mailman/listinfo/r-help
>>>      PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html
>>>      and provide commented, minimal, self-contained, reproducible code.
>>>
>>          [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.



More information about the R-help mailing list