library(timeplyr)
library(dplyr)
# \dontshow{
.n_dt_threads <- data.table::getDTthreads()
.n_collapse_threads <- collapse::get_collapse()$nthreads
data.table::setDTthreads(threads = 1L)
collapse::set_collapse(nthreads = 1L)
# }
# Has built-in tolerance
sqrt(2)^2 %% 1 == 0
is_whole_number(sqrt(2)^2)
is_whole_number(1)
is_whole_number(1.2)
x1 <- c(0.02, 0:10^5)
x2 <- c(0:10^5, 0.02)
is_whole_number(x1)
is_whole_number(x2)
# Somewhat more strict than all.equal
all.equal(10^9 + 0.0001, round(10^9 + 0.0001))
is_whole_number(10^9 + 0.0001)
# Can safely be used to select whole number variables
starwars %>%
select(where(is_whole_number))
# To reduce the size of any data frame one can use the below code
df <- starwars %>%
mutate(across(where(is_whole_number), as.integer))
# \dontshow{
data.table::setDTthreads(threads = .n_dt_threads)
collapse::set_collapse(nthreads = .n_collapse_threads)
# }
Run the code above in your browser using DataLab