如何确定R中的两个变量是否具有相同的符号

如何确定R中的两个变量是否具有相同的符号,r,R,例如,我有两个变量a和b。它们都是数字。我想检查他们是否有相同的正负号,或者他们有不同的正负号。如果其中一个为0,那么它们不能同时为0,那么我认为它们是不同的。 我知道我会写作 if (a*b<=0) ... 提前谢谢 试试这个 f <- function(a,b) {ifelse(a == 0 | b == 0,as.logical("FALSE"),!xor(sign(a)+1,sign(b)+1))} 函数f为相同的符号返回逻辑TRUE,为不同的符号返回FALSE,或者如果

例如,我有两个变量a和b。它们都是数字。我想检查他们是否有相同的正负号,或者他们有不同的正负号。如果其中一个为0,那么它们不能同时为0,那么我认为它们是不同的。 我知道我会写作

if (a*b<=0) ...
提前谢谢

试试这个

f <- function(a,b) {ifelse(a == 0 | b == 0,as.logical("FALSE"),!xor(sign(a)+1,sign(b)+1))}

函数f为相同的符号返回逻辑TRUE,为不同的符号返回FALSE,或者如果其中一个变量等于0,则最好在R中使用符号函数,如果数字为正或非正,则返回1或-1,如果数字为0,则返回0。您可以像这样将这些链接在一起:

signx==signy


编辑:感谢您对返回1/-1/0而不是真或假的更正,今天早上我在玩它时完全忽略了这一点。

符号在这里可能有用。在R中签名返回-1、0或1,因此符号-1和符号1等于真。所以使用sign的正确答案应该是signx==signy。@alko989:这应该是答案,否则amblina的帖子应该更正以反映这一点。@jbaums:我评论并否决了该帖子需要更正的说法。如果它被纠正了,我也会考虑投票正确的答案。@ ALOO989:谢谢你的更正,你对V.V= =是完全正确的,我已经编辑了我的答案来反映这一点。不需要A.Logic false -只是简单的假就足够了。另外,没有必要,因为这里没有矢量。
f <- function(a,b) {ifelse(a == 0 | b == 0,as.logical("FALSE"),!xor(sign(a)+1,sign(b)+1))}