[R] calling a function with dynamically generated buttons

Anne Skoeries home at anne-skoeries.de
Wed Aug 12 16:26:46 CEST 2009


Thanks, works just fine! Great!
--
Anne Skoeries


Am 12.08.2009 um 16:04 schrieb jim holtman:

> Untested, but try something like this:
>
> for(i in 1:(reihen-1)) {
>
>       but <- tkbutton(base, text = classi[i], command = local({
>                       anzeige <- data.matrix(dataframe[i,-c(spalten)])
>                        namen <- names(anzeige)
>                        tit <- paste(classi[i], "\nTotal Threshold
> for", classi[i], ":", dataframe[i, spalten])
>                       function() {plotten(mat = anzeige, namen =
> namen, titel = tit)}
>                   }))
>       tkgrid(but, row=4, column=i, sticky="e")
> }
>
> On Wed, Aug 12, 2009 at 8:47 AM, Anne Skoeries<home at anne- 
> skoeries.de> wrote:
>> Hallo,
>>
>> I'm dynamically generating buttons depending on the number of rows  
>> of my
>> dataframe. Every button is supposed to call a function which  
>> generates a
>> plot with the values of one of my dataframe rows.
>>
>> My code looks like this:
>>
>> base <- tktoplevel()
>>
>> plotten <- function(mat, namen, titel) {
>>        midpts <- barplot(height=mat, names.arg = namen, main =  
>> titel, las=2)
>>        text(midpts, 1, mat)
>>        mtext(text=paste("Treshold:", thresh), side=3, col="blue")
>>      }
>>
>>  lb <- tklabel(base, text="Barplot:")
>>  tkgrid(lb, row=4, column=0)
>>
>>  for(i in 1:(reihen-1)) {
>>        anzeige <- data.matrix(dataframe[i,-c(spalten)])
>>        namen <- names(anzeige)
>>        tit <- paste(classi[i], "\nTotal Threshold for", classi[i],  
>> ":",
>> dataframe[i, spalten])
>>
>>        but <- tkbutton(base, text = classi[i], command = function()
>> {plotten(mat = anzeige, namen = namen, titel = tit)})
>>        tkgrid(but, row=4, column=i, sticky="e")
>> }
>>
>> The buttons are all displayed correctly in my window, but after  
>> pressing
>> one, it always generates a plot with the last parameters. So, if I've
>> generated 3 buttons and choose button1, it generates a plot with the
>> parameters of button3. The same plot after pressing button2 or  
>> button3.
>>
>> How can I make sure, that each button calls the function with it's  
>> "own"
>> parameters? So that button1 calls the function with the first row  
>> of my
>> dataframe as the function parameter, button2 with the second row  
>> and so on?
>>
>> Thanks in advance,
>>
>> --
>> Anne Skoeries
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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.
>>
>
>
>
> -- 
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?




More information about the R-help mailing list