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

时间:2014-06-24 10:23:39

标签: r

例如,我有两个变量a和b。他们都是数字。我想检查他们是否有相同的标志(正面或两面都是负面的)或者它们有不同的标志。如果其中一个是0(它们不能都是0),那么我认为它们是不同的签名。 我知道我可以写

if (a*b<=0) ...

但我不认为这是一个好方法,因为a和b都是大数字而R给出警告:

Warning message:
In b[i - 1, 4] * b[i, 4] :NAs produced by integer overflow

提前致谢!

2 个答案:

答案 0 :(得分:7)

一个好主意是使用R中的sign()函数,如果数字为正数,则返回1-1;如果数字为0,则返回0你可以像这样链接这些:

sign(x)==sign(y)

编辑:感谢关于返回1 / -1 / 0而不是TRUE或FALSE的更正,当我今天早上玩它时,我完全错过了。

答案 1 :(得分:0)

试试这个

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

函数f为相同的符号返回逻辑TRUE,为不同的符号返回FALSE,或者如果其中一个变量等于0