locator(n=1) or (n=500) as S-plus ?

Martin Maechler Martin Maechler <maechler@stat.math.ethz.ch>
Tue, 26 Jan 1999 10:53:48 +0100

>>>>> "MM" == Martin Maechler <maechler@stat.math.ethz.ch> writes:

    MM> There's a non-compatibility between R and S-plus with the default
    MM> argument of the locator() function.

    MM> R      has locator(n=1)
    MM> S-plus has locator(n=500, type="n", noclick=F)

    MM> S's default is ``better'' I think, insofar as it means in 99% of
    MM> the cases ``user clicks <left> as many times as wanted and then
    MM> clicks <right> to end''

    MM> Ross Ihaka and his grad students are working on improving this
    MM> interface, I believe, however, I'd propose to just change

    MM> the default of n=1 to n=500 (or another "large" integer in order to
    MM> not copy S exactly).

I got 0 feedback..

What about the following new  locator()
which additionally adds a   `msg' argument 

The old behavior is got  by
	locator( *, msg="")  or  
	locator(*, msg=NULL) 

locator <- function(n = 512, 
                    msg = "Click left to locate points;  right to end") 
    do.msg <- is.character(msg) && nchar(msg) > 0
    if(do.msg) cat(msg,": ",sep="")
    z <- .Internal(locator(n))# n <= 0 gives error
    if(do.msg) cat("\n")
    x <- z[[1]]
    y <- z[[2]]
    if((n <- z[[3]]) > 0) list(x=x[1:n], y=y[1:n]) 

Would anyone not like the default of `msg' writing to the console?
I've often been startled by functions using locator() and not prompting
the user to do start clicking in the graphic window at all..

One could also use the new argument

 prompt =
   "Use the graphics window to locate points;\n click left to add, right to end"

Feedback welcome !!

r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch