R中开关函数的奇异行为

R中开关函数的奇异行为,r,R,我有一个奇怪的问题,R中的开关函数 代码非常简单,但我不理解其行为 示例:好的 a=1 switch(a, "1" = print("one"), "2" = print("two"), print("?") ) 正确的 a=1>>[1]“一个” 正确的 a=2>>[1]

我有一个奇怪的问题,R中的开关函数

代码非常简单,但我不理解其行为

示例:好的

a=1

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

  • 正确的 a=1>>
    [1]“一个”

  • 正确的 a=2>>
    [1]“两个”

  • 改正 a=3>>
    [1]“?”

  • 4)奇怪的 a=0>>>未打印任何内容。 a=-1>>>未打印任何内容

    另一个例子也很奇怪

    a=-1
    
    switch(a,             
           "1" = print("one"),   
           "-1" = print("minus"),  
           print("?")            
            ) 
    
    
    没有印刷


    为什么负值的大小写会导致意外行为?

    在比较字符之前,应该强制将a的值与字符进行比较。它似乎不像预期的那样处理负整数。但是使用
    as.character()
    它工作得很好

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

    switch(如字符(a),…)
    阅读函数
    switch()
    的文档!谢谢你友好的回答。这对我来说很清楚。