as.character(1)== as.numeric(1)为什么是TRUE?

时间:2019-05-17 15:49:30

标签: r

就像标题中所说的那样,"1" == 1为什么是TRUE?这背后的真正原因是什么? R是想和善还是其他呢?我一直在思考,因为“ 1”(或任何数字实际上都没有关系)在R中作为字符读取时,如果与as.numeric(1)as.integer(1)比较,它将自动返回FALSE。

> as.character(1) == as.numeric(1)
[1] TRUE

> "1" == 1
[1] TRUE

我想这是一个简单的问题,但我想得到一个答案。谢谢。

1 个答案:

答案 0 :(得分:5)

根据?==

  

对于数值和复数值,请记住==和!=不允许分数的有限表示,也不允许四舍五入。几乎总是将all.equal与same一起使用。 S

在另一段中也写成

  

x,y
  原子向量,符号,调用或已为其编写方法的其他对象。如果两个参数是不同类型的原子向量,则一个被强制转换为另一个,第二个参数的优先级(降序)顺序为字符,复杂,数字,整数,逻辑和原始。

identical(as.character(1), as.numeric(1))
#[1] FALSE