You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:12:31