[R] tkbutton command - how to know which button was clicked?
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Fri Jun 30 22:24:48 CEST 2006
JeeBee <JeeBee at troefpunt.nl> writes:
> In the below code fragment, print(arg) always prints the
> last element of rekeningen$rekening.
> Is this because of lazy evaluation? I.e. arg is evaluated at
> the time the button is pressed?
No and yes. Lazy evaluation has nothing to do with it, but the
function passed to command= is not evaluated until the button is
pressed. If you want a different "arg" variable for each
button-function, you have to make sure that they have different
environments or have the arg actually part of the function.
There are various possible variations. One is
mk.button <- function(arg)
tkgrid(tkbutton(frame.1,
text=paste("Saldo historie", arg),
command=function() print(arg)),
sticky="news")
for .... {
....
mk.button(arg)
}
another is to wrap a local({arg <- arg;.....}) around the tkgrid call
in your code. A 3rd one is
.....command=eval(substitute(function()print(arg)))...
> And, if so, how can I avoid this?
> I tried function() {force(arg); print(arg)} but that didn't work either.
>
> Thanks,
> Jeebee.
>
> for(rek in seq(1,nrow(rekeningen))) {
> arg <- rekeningen$rekening[rek]
>
> tkgrid(tkbutton(frame.1,
> text=paste("Saldo historie", arg),
> command=function() print(arg)),
> sticky="news")
> }
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list