【发布时间】:2021-09-24 10:59:07
【问题描述】:
这也许是一个不寻常的问题。我想知道是否有可能在 R 中创建一个对象y,而x == y 总是评估为TRUE,或者可能的NA(例如,如果x 是NA),无论@ 的值是多少987654327@.
如有必要,y 也可以是函数调用 y()。
我能想到的解决此类问题的唯一方法是使用sys.call() 或sys.calls(),但到目前为止,我对这种方法没有运气。
注意,我不知道你为什么需要这种行为,我只是想知道它是否可以做到。
【问题讨论】:
-
您需要在这里使用
==还是all.equal()选项 -
会覆盖
==计数吗? -
我对@987654335@ 的使用特别感兴趣,因为我可以看到您如何使用
sys.call()和all.equal()来实现它。但是,如果您使用all.equal()发布解决方案,我肯定会 +1。 -
@KonradRudolph 重写并不是我真正想要的对不起
-
@RHertel 您可以覆盖它以检查第二个参数是否是已知的哨兵,否则恢复为默认行为。当然,这仍然会破坏与 OP 的
y相比的所有代码,但这似乎是明确要求的。
标签: r metaprogramming lazy-evaluation evaluation