如何检查两个对象(例如数据帧)在R中的值是否相等?
值相等,我的意思是一个数据帧的每列的每一行的值等于第二个数据帧中相应的行和列的值.
我经常使用all函数,每当我得到TRUE,我发现自己检查比较的所有元素都不是NULL或为空,因为这可能会给出错误的TRUE结果.
例:
y<-1:10
z<-5:15
# I make a comparison which is really true
all(y[y>5 & y<10]==z[z>5 & z<10])
[1] TRUE
# Now I make a typo because I often do, but I don't notice:
all(y[y>5 & y<0]==z[z>5 & z<10])
[1] TRUE
# the result is also true but only because y[y>5 & y<0] is empty:
y[y>5 & y<0]
#integer(0)
Run Code Online (Sandbox Code Playgroud)
因此,在第二种情况下,如果我不检查每个元素all,我将使用我的代码,认为一切顺利,当然,最终结果将是不正确的.
我没有检查我all拨打电话的元素,而是可以添加一个length电话:(all(y[y>5 & y<0]==z[z>5 & z<10]) …
为什么NA==NULL 结果logical (0)不是FALSE?
为什么会NULL==NULL导致结果logical(0)而不是TRUE?