From: Duncan Murdoch <murdoch_at_stats.uwo.ca>

Date: Sat 04 Jun 2005 - 12:31:47 EST

return(function() coords)

}

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 12:36:46 2005

Date: Sat 04 Jun 2005 - 12:31:47 EST

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

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 12:36:46 2005

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