为什么是&书信电报;整数>"E;==&书信电报;整数>;在R中为真

为什么是&书信电报;整数>"E;==&书信电报;整数>;在R中为真,r,R,我刚开始学习R,在我的第一个作业中,我遇到了一个问题,我需要比较一组变量,而在这样做的时候,我应该在比较两个变量时得到错误,不仅当它们不相等时,而且当它们的类型不相同时。 例如: 7 == "7" 给出正确的,应该是错误的。 目前,我正在做以下同样的工作: var1 = 8 == "8" var2 = typeof(8) == typeof("8") var1 & var2 我想应该有更简单的方法来解决这个问题。 它似乎隐式地将7转换为“7”,就像我们将数字添加到字符向量时一样。 那

我刚开始学习R,在我的第一个作业中,我遇到了一个问题,我需要比较一组变量,而在这样做的时候,我应该在比较两个变量时得到错误,不仅当它们不相等时,而且当它们的类型不相同时。 例如:

7 == "7"
给出正确的,应该是错误的。 目前,我正在做以下同样的工作:

var1 = 8 == "8"
var2 = typeof(8) == typeof("8")
var1 & var2
我想应该有更简单的方法来解决这个问题。 它似乎隐式地将7转换为“7”,就像我们将数字添加到字符向量时一样。
那么,有没有一种方法可以在一行中获得相同的结果?

来自
“比较”
帮助页面:

如果两个参数是不同类型的原子向量,则一个强制为另一个的类型,优先顺序(递减)为字符、复数、数字、整数、逻辑和原始

在同一帮助页面上,作者警告使用
==
=用于
if
-表达式中的测试。他们建议改用
idential()

7 == "7"
# TRUE
identical(7, "7")
# FALSE

R强制元素以便可以比较它们。在这种情况下,7变为“7”,因此可以将其与右侧的“7”进行比较。例如,您可以执行相同的操作(“7”,7)
。阅读帮助文件,
?“==”
,你会发现根据情况,各种强制都会在幕后进行。下面是帮助文件关键点:如果两个参数是不同类型的原子向量,一个被强制为另一个的类型,优先顺序(递减)为字符,复数、数字、整数、逻辑和原始。“”不等于7。@lmo idential()函数非常有效。谢谢你给我一个关于“==”的建议。这实际上向我展示了如何使用“?”:)获得帮助,这并不意味着人们不应该仍然非常小心:
idential(8L,8)[1]FALSE
。如果定义一个向量,例如,
xtrue,就会发生这种情况。同时,
相同(8,8.0)[1]正确
。似乎
R
会自动假定数字数据是浮点数,除非另有明确规定