Libby
Libby

Reputation: 21

create numeric vector based on values in logic vector- R

I have a logic vector in R something like this:

 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [19] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [55] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [73] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

I want to construct another numeric vector that contains a 1 if the logic vector is true and a 0 if it is false. I have tried the following code

## create an empty vector
numericvec <- vector(mode="numeric", length=0)

## for loop
for (i in logicvec){
  if(i == TRUE){
    c(numericvec, 1)
  } else {
    c(numericvec, 0)
  }
}

The for loop syntax seems ok because I don't get errors when I run it but it isn't currently adding any values to the numeric vector.

Upvotes: 1

Views: 124

Answers (1)

Louis Merlin
Louis Merlin

Reputation: 53

This should work:

numericvec <- as.numeric(logicvec)

No need for a for() loop. R typically operates on entire columns.

Upvotes: 1

Related Questions