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 element in a vector is less than 0.
I need to use this function on all elements in a vector returning a new vector with only zeros and ones.
Thanks.
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)
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
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With