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.
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}:In R
TRUE
andFALSE
can be treated as 1 and 0s, but if you insist on your output being precisely those numbers, just wrap yourI
function intoas.numeric
.There is also an built-in indicator function in R
-Inf and Inf are still the valid values.
There are a variety of ways, the minimal keystroke one:
Saves a couple of keystrokes over:
as.numeric(vec>0)
. I would guess theifelse(x>0,1,0)
-approach would be somewhat slower if applied to a large vector or if used in simulations. Could also use: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.
You can also use if its for only one vector something like below:
Hope this helps