Indicator function in R

前端 未结 4 1747
礼貌的吻别
礼貌的吻别 2020-12-19 07:53

I\'m looking for an indicator function in R, i.e. a function that returns a 1, if the value of an element in a vector is greater than 0 and returns zero, if the value of an

相关标签:
4条回答
  • 2020-12-19 08:06

    The I function in R, called the Inhibit Interpretation/Conversion of Objects function, can be used for this purpose. For instance, the line below returns the values for the function I(x < 4) where X = {0, 1, 2, 3, 4, 5}:

    > I(0:5 < 4)
    [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE
    

    In R TRUE and FALSE can be treated as 1 and 0s, but if you insist on your output being precisely those numbers, just wrap your I function into as.numeric.

    0 讨论(0)
  • There are a variety of ways, the minimal keystroke one:

      Ivec <- 0+(vec>0)
    

    Saves a couple of keystrokes over: as.numeric(vec>0). I would guess the ifelse(x>0,1,0)-approach would be somewhat slower if applied to a large vector or if used in simulations. Could also use:

     Ivec <- 1*(vec>0)
    
    0 讨论(0)
  • 2020-12-19 08:14

    If i am able to understand you correctly then you want to make changes into entire data frame,assuming of which i can suggest you to use apply like below, where df is your data frame.

    apply(df,2,function(x)ifelse((x>0),1,0))
    

    You can also use if its for only one vector something like below:

    x <- c(-2,3,1,0)
    y <- ifelse(x>0,1,0)
    print(y)
    [1] 0 1 1 0 #Output
    

    Hope this helps

    0 讨论(0)
  • 2020-12-19 08:27

    There is also an built-in indicator function in R

    Indicator(x,min,max)

    -Inf and Inf are still the valid values.

    0 讨论(0)
提交回复
热议问题