为何R语言允许将向量中的数值当作字符进行比较?
为啥数值型向量和字符"2"比较也能运行?
先看你的代码里的workshop,它是个数值型向量:
workshop <- c(1,2,1,2,1,2,1,2)
当你写workshop=="2"的时候,R会偷偷做类型隐式转换——把workshop里的所有数值都转成字符,变成c("1","2","1","2","1","2","1","2"),再和字符"2"做相等比较,得到的逻辑索引和workshop==2完全一样,所以用它取gender的结果自然也相同。
但这种写法虽然能运行,非常不推荐:
- 比如如果
workshop里有10,你写workshop=="10"没问题,但要是手滑写成workshop=="01",结果就全错了 - 要是数值是
2.0转字符是"2",但如果是2.1,和"2"比就不相等,这种细节很容易埋坑
正经写法还是保持两边类型一致,用workshop==2来做数值比较,别依赖这种隐式转换。
内容的提问来源于stack exchange,提问作者Varun Nair
相关产品推荐
相关产品推荐

