[R] Re: locator() via tcltk

From: Sebastian Luque <spluque_at_gmail.com>
Date: Sat 04 Jun 2005 - 13:58:57 EST

That's very interesting, thanks a lot Duncan. I should re-read the R Language manual in more detail.

Sebastian

On 6/3/05, Duncan Murdoch <murdoch@stats.uwo.ca> wrote:
> Sebastian Luque wrote:
> > Hello,
> >
> > I'm trying to write a function using tcltk to interactively modify a plot
> > and gather locator() data. I've read Peter's articles in Rnews, the help
> > pages in tcltk,
http://bioinf.wehi.edu.au/~wettenhall/RTclTkExamples/,
> > plus a post in R-help sometime ago, but haven't found a solution.
> > The idea goes something like this:
> >
> > require(tcltk)
> > testplot <- function() {
> > getcoords <- function(...) {
> > locator(5)
> > }
> > x <- 1:1000
> > y <- rnorm(1000)
> > plot(x, y)
> > base <- tktoplevel()
> > loc.pts <- tkbutton(base, text = "Get coordinates", command =
> getcoords)
> > quit.but <- tkbutton(base, text = "Quit",
> > command = function() tkdestroy(base))
> > tkpack(loc.pts, quit.but)
> > }
> >
> > I'd like testplot to return the value from getcoords. The "Get
> > coordinates" button seems to be correctly calling getcoords, and locator
> > is doing its job, but I don't know how to store its value. Any help is
> > very much appreciated.
>
> You can do this with local functions. For example,
>
> testplot <- function() {
>
> coords <- NA
>
> getcoords <- function(...) {
> coords <<- locator(5)
> }
> x <- 1:1000
> y <- rnorm(1000)
> plot(x, y)
> base <- tktoplevel()
> loc.pts <- tkbutton(base, text = "Get coordinates", command =
> getcoords)
> quit.but <- tkbutton(base, text = "Quit",
> command = function() tkdestroy(base))
> tkpack(loc.pts, quit.but)
> return(function() coords)
> }
>
> This stores the results in a variable named coords in the testplot
> frame. testplot itself returns a function that can read that value.
> You'd use it like this:
>
> lastval <- testplot()
>
> ## do some button clicking...
>
> lastval() # will print the result of the last click.
>
> This is one of the somewhat weird but very nice features of R. S-PLUS
> doesn't work this way.
>
> Duncan Murdoch
>

-- 
Sebastian Luque
Department of Biology
Memorial University of Newfoundland

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Sat Jun 04 14:02:42 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:22 EST