在R中编写指标功能

时间:2014-03-19 17:55:15

标签: r function indicator

我试图在R中创建一个指示符变量Z,即如果我有一些事件A,我希望Z如果A为真则给出结果为1,如果A为假则给出0。 我试过这个:

Z=0
if(A==(d>=5 && d<=10))
  {
    Z=1
  }
  else
  {
    Z=0
  }

但这不起作用。我也在想我可以尝试编写一个名为指标的单独函数:

indicator = function()

任何建议都会非常有用,谢谢

4 个答案:

答案 0 :(得分:3)

您可以轻松编写类似这样的内容

indicator<-function(condition) ifelse(condition,1,0)

ifelse可用于向量,但它对单个逻辑值(TRUE或FALSE)完全正常。

答案 1 :(得分:2)

布尔人FALSE / TRUE可以被强制为01,然后成倍增加:

Indicator<-function(x, min=0, max=Inf)
    { 
        as.numeric(x >= min) * as.numeric(x <= max)
    }

答案 2 :(得分:0)

您可以使用

a <- data.frame(a = -5:5, b = 1:11) indicator <- function(data) I(data > 0) + 1 - 1 indicator(a)

a可以是矢量,数据帧...

您可以根据自己的喜好尝试I函数中的逻辑。

答案 3 :(得分:-1)

无需定义A,只需测试条件即可。 另外,请记住&&&在R中有不同的用途(有关详细信息,请参阅R - boolean operators && and ||),因此这可能是您问题的一部分。

if (d>=5 & d<=10)
   {
   Z <- 1
   }
  else
   {
   Z <- 0
   }

或者,正如其他答案所建议的那样使用ifelse

z <- ifelse((d>=5 & d<=10), 1, 0)