[R] Wireframe plot inside a function

George Trojan - NOAA Federal george.trojan at noaa.gov
Sat Apr 22 00:45:54 CEST 2017


But it works ;-). According to print.trellis help, 'plot' is an alias
for 'print'.

IMO, this is an abuse of overloading: same method name does totally
different things.

On 21 April 2017 at 21:58, Jeff Newmiller <jdnewmil at dcn.davis.ca.us> wrote:
> No... it is
>
> print(plot(cop1, main = "cop1 function"))
>
> --
> Sent from my phone. Please excuse my brevity.
>
> On April 21, 2017 1:56:00 PM PDT, George Trojan - NOAA Federal <george.trojan at noaa.gov> wrote:
>>I see. So, if I don't care about the plot object itself,  the proper
>>incantation is
>>
>>plot(plot(cop1, main = "cop1 function"))
>>
>>Thanks again.
>>
>>On 21 April 2017 at 20:32, Jeff Newmiller <jdnewmil at dcn.davis.ca.us>
>>wrote:
>>> Your original function created the cop1 plot object but did nothing
>>with it. It then created the cop2 plot and returned it from the
>>function. Since you had invoked the cplot function from the interactive
>>console, R printed that returned object automatically, which displayed
>>the plot.
>>>
>>> FYI: when you want to start presenting multiple plots and/or tables
>>together you will find that something like knitr and RMarkdown are very
>>helpful.
>>> --
>>> Sent from my phone. Please excuse my brevity.
>>>
>>> On April 21, 2017 11:59:28 AM PDT, George Trojan - NOAA Federal
>><george.trojan at noaa.gov> wrote:
>>>>Thanks. After changing the function to
>>>>
>>>>cplot <- function(cop1, cop2) {
>>>>  x11()
>>>>  o <- plot(cop1, main = "cop1 function")
>>>>  print(o)
>>>>  x11()
>>>>  o <- plot(cop2, main = "cop2 function")
>>>>  print(o)
>>>>}
>>>>
>>>>I see both plots. But, since "cop2 function" was plotted before, does
>>>>it mean it is plotted twice now? Looks as a strange design.
>>>>
>>>>I did check the "Plain text mode" in Chrome, you should see only the
>>>>text part.
>>>>
>>>>George
>>>>
>>>>On 21 April 2017 at 16:27, Jeff Newmiller <jdnewmil at dcn.davis.ca.us>
>>>>wrote:
>>>>> FAQ 7.22
>>>>> And don't send HTML email... you are the one making it difficult
>>for
>>>>us to read your question.
>>>>>
>>>>> --
>>>>> Sent from my phone. Please excuse my brevity.
>>>>>
>>>>> On April 21, 2017 8:27:20 AM PDT, George Trojan - NOAA Federal
>>>><george.trojan at noaa.gov> wrote:
>>>>>>Consider the following example:
>>>>>>
>>>>>>library("kdecopula")
>>>>>>library("mvtnorm")
>>>>>>
>>>>>>pobs <- function(x) rank(x) / (length(x) + 1)
>>>>>>
>>>>>>n <- 1000
>>>>>>
>>>>>>sigma1 <- diag(x = 1, 2, 2)
>>>>>>x1 <- rmvnorm(n, sigma = sigma1)
>>>>>>xx1 <- apply(x1, 2, pobs)
>>>>>>cop1 <- kdecop(xx1)
>>>>>>
>>>>>>eps <- 0.8
>>>>>>sigma2 <- matrix(c(1, eps, eps, 1), ncol = 2)
>>>>>>x2 <- rmvnorm(n, sigma = sigma2)
>>>>>>xx2 <- apply(x2, 2, pobs)
>>>>>>cop2 <- kdecop(xx2)
>>>>>>
>>>>>>x11()
>>>>>>plot(cop1, main = "cop1 main")
>>>>>>x11()
>>>>>>plot(cop2, main = "cop2 main")
>>>>>>
>>>>>>cplot <- function(cop1, cop2) {
>>>>>>  x11()
>>>>>>  plot(cop1, main = "cop1 function")
>>>>>>  x11()
>>>>>>  plot(cop2, main = "cop2 function")
>>>>>>}
>>>>>>
>>>>>>cplot(cop1, cop2)
>>>>>>
>>>>>>cat("Press <Enter> to quit")
>>>>>>readLines(file("stdin"), n
>>>>>>
>>>>>>=
>>>>>>
>>>>>>1)
>>>>>>quit()
>>>>>>
>>>>>>When I run it with Rscript all four x11 windows pop up, however the
>>>>one
>>>>>>that should display "cop1 function" is blank, the wireframe is not
>>>>>>plotted.
>>>>>>This is R 3.3.1, on Fedora 20.
>>>>>>I see similar behaviour on Fedora 24, R 3.3.3 when I run the code
>>>>from
>>>>>>RStudio (the most recent one).
>>>>>>
>>>>>>George
>>>>>>
>>>>>>       [[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