[Rd] Memcheck: error in a switch using getGraphicsEvent

Duncan Murdoch murdoch.duncan at gmail.com
Fri Mar 21 01:45:28 CET 2014


On 2014-03-20, 8:02 PM, Christophe Genolini wrote:
> Hi the list,
>
> One of my package has an (other) error detected by memtest that I do not manage to understand.
> Here is the message that I get from Memtest
>
> --- 8< ----------------
>   > try(choice(cld1))
> Error in switch(EXPR = choix, Up = { : EXPR must be a length 1 vector
> --- 8< ----------------
>
> The choice function does call the choiceChangeParam function, which is:
>
> --- 8< ----------------
> choiceChangeParam <- function(paramChoice){
>
>       texte <- paste("     ~ Choice : menu    ~\n",sep="")
>
>       choix <- getGraphicsEvent(texte,onKeybd=function(key){return(key)})
>       switch(EXPR=choix,
>              "Up"    = {
>                  if(xy[1]>1){
>                      paramChoice['toDo'] <- "xy"
>                      xy[2]<-1
>                      xy[1]<-xy[1]-1
>                      paramChoice['xy']<-xy
>                  }else{paramChoice['toDo'] <- ""}
>              },
>              "Down"  = {
>                  if(xy[1]<nrow(paramChoice['critMatrix'])){
>                      paramChoice['toDo'] <- "xy"
>                      xy[2]<-1
>                      xy[1]<-xy[1]+1
>                      paramChoice['xy']<-xy
>              "d" = {
>                  paramChoice['toDo'] <- "changeCriterion"
>                  paramChoice['critRank'] <- (paramChoice['critRank']%%length(CRITERION_NAMES)) + 1
>              },
>              "c" = {
>                  paramChoice['toDo'] <- "order"
>              },
>              default={}
>
>              )
>       return(paramChoice)
> }
> --- 8< ----------------
>
> choix is a character of lenght 1 since getGraphicsEvent return a character, am I wrong?
>

It can also return NULL, but to be sure, why not print the value?

Duncan Murdoch



More information about the R-devel mailing list