[Rd] Memcheck: error in a switch using getGraphicsEvent

Christophe Genolini cgenolin at u-paris10.fr
Fri Mar 21 11:47:37 CET 2014


Le 21/03/2014 01:45, Duncan Murdoch a écrit :
> 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
>
>
Thanks for your answer. According to your suggestion, I add the line "cat" between the two other lines:
--- 8< -----------------
     ....
     choix <- getGraphicsEvent(texte,onKeybd=function(key){return(key)})
     cat("Choix : ",choix," class :",class(choix)," length :",length(choix),"\n")
     switch(EXPR=choix,
     ....
--- 8< -----------------

I then make several attempts. In all the cases, the length of choix is 1:

--- 8< ------------------
     ~ Choice : menu ~
Choix :  Down  class : character  length : 1
      ~ Choice : menu ~
Choix :  Up  class : character  length : 1
      ~ Choice : menu ~
Choix :  e  class : character  length : 1
      ~ Choice : menu ~
Choix :  ,  class : character  length : 1
      ~ Choice : menu ~
Choix :     class : character  length : 1
      ~ Choice : menu ~
Choix :  9  class : character  length : 1
      ~ Choice : menu ~
Choix :  ctrl-I  class : character  length : 1
      ~ Choice : menu ~
Choix :  ²  class : character  length : 1
      ~ Choice : menu ~
Choix :  ctrl-J  class : character  length : 1
--- 8< ---------------------

-- 
Christophe Genolini
Maître de conférences en bio-statistique
Université Paris Ouest Nanterre La Défense
INSERM UMR 1027



More information about the R-devel mailing list