Search code examples
rsumlogical-operatorsinteger-division

How many values of a vector are divisible by 2? Use R


I have an ex. where I have to see how many values of a vector are divisible by 2. I have this random sample:

set.seed(1)
y <- sample(c(0:99, NA), 400, replace=TRUE)

I created a new variable d to see which of the values are or aren't divisible by 2:

d <- y/2 ; d

What I want to do is to create a logical argument, where all entire numbers give true and the rest gives false. (ex: 22.0 -> TRUE & 24.5 -> FALSE)

I used this command, but I believe that the answer is wrong since it would only give me the numbers that are in the sample:

sum(d %in% y, na.rm=T) 

I also tried this (I found on the internet, but I don't really understand it)

is.wholenumber <- function(x, tol = .Machine$double.eps^0.5)  abs(x - round(x)) < tol
sum(is.wholenumber(d),na.rm = T)

Are there other ways that I could use the operator "%%"?


Solution

  • you can sum over the mod operator like so: sum(1-y%%2) or sum(y%%2 == 0). Note that x %% 2 is the remainder after dividing by two which is why this solution works.