I'd appreciate any idea on how to do it, so we can compare them with each other.
Here is one to start out with:
is.natural <- function(x) { x>0 && identical(round(x), x) }
The docs suggest a similar method, so I doubt you'll get any better. Remember to include an epsilon to take into account precision issues!
is.naturalnumber <- function(x, tol = .Machine$double.eps^0.5) x > tol & abs(x - round(x)) < tol is.naturalnumber(1) # is TRUE (x <- seq(1,5, by=0.5) ) is.naturalnumber( x ) #--> TRUE FALSE TRUE ...
2.1m questions
2.1m answers
60 comments
57.0k users