r - R中开关功能的奇怪行为
问题描述
我在 R 中有一个奇怪的开关功能问题。
代码很简单,但我不明白这种行为。
示例:确定
a=1
switch(a,
"1" = print("one"),
"2" = print("two"),
print("?")
)
正确 a=1 >>>
[1] "one"
正确 a=2 >>>
[1] "two"
正确 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("?")
)
推荐阅读
- java - 如何将值移动到堆栈的底部而不是顶部?
- javascript - 如何将数据获取到 ExtensionSidebarPane 的 HTML 页面中?
- google-sheets - 谷歌表格:复制表格丢失了一些命名范围
- javascript - 有没有办法根据里面的图像来塑造 img 元素的边缘?
- android - Android Kotlin:自定义视图导致更改片段时崩溃
- c - 采用多字命令的基本 shell
- flutter - Flutter 从不同的类访问 StatefulWidget 的 State 类变量
- amazon-web-services - `aws s3 cp` 与 `aws s3 sync` 行为和成本
- javascript - 如何访问/传递javascript对象中嵌套函数中的变量?
- python - 聊天清除无权限复出消息不起作用