首页 > 解决方案 > R中开关功能的奇怪行为

问题描述

我在 R 中有一个奇怪的开关功能问题。

代码很简单,但我不明白这种行为。

示例:确定

a=1

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

  1. 正确 a=1 >>>[1] "one"

  2. 正确 a=2 >>>[1] "two"

  3. 正确 a=3 >>>[1] "?"

4)奇怪 的a = 0 >>>没有打印。a=-1 >>> 没有打印。

另一个例子也很奇怪

a=-1

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

什么都没有打印!

为什么负值的情况会导致意外行为?

标签: r

解决方案


在比较之前,您应该将 a 的值强制为一个字符。它似乎没有按预期处理负整数。但有了as.character()它就可以了。

a=-1

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

推荐阅读