Странное поведение функции переключения в R - PullRequest
0 голосов
/ 07 августа 2020

У меня странная проблема с функцией переключения в R.

Код очень простой, но я не понимаю его поведения.

Пример: OK

a=1

switch(a,             
       "1" = print("one"),   
       "2" = print("two"),  
       print("?")            
        ) 

  1. Исправить a = 1 >>> [1] "one"

  2. Исправить a = 2 >>> [1] "two"

  3. Corrct a = 3 >>> [1] "?"

4) Странно a = 0 >>> Ничего не напечатано. a = -1 >>> Ничего не напечатано.

Другой пример тоже странный

a=-1

switch(a,             
       "1" = print("one"),   
       "-1" = print("minus"),  
       print("?")            
        ) 

Ничего не напечатано!

Почему случай отрицательного значения вызывает неожиданное поведение?

1 Ответ

1 голос
/ 07 августа 2020

Вы должны принудительно присвоить значение a символу, прежде чем сравнивать его. Кажется, что отрицательные целые числа обрабатываются не так, как ожидалось. Но с as.character() работает нормально.

a=-1

switch(as.character(a),             
       "1" = print("one"),   
       "-1" = print("minus"),  
       print("?")            
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...