This question is in part an R issue, but primarily an
Consider this code:
x <- tibble(x = rpois(1e2, 5), z = rnorm(1e2, 0, 1)) x %>% dplyr::mutate(across(where(is.numeric), round, 4))
My goal is to round the numeric columns, but not the integer columns, which of course need no rounding. The problem from an R perspective is that integer columns are numeric columns also. But this code further results in the integers being converted to numeric (albeit still being nominal integers in output), which is undesirable. I want the non-integer columns rounded and the integer columns left alone.
The goal is to specify an
across statement that works for
is.numeric but also enforces
dplyr::mutate(across(where(is.numeric & !is.integer), round, 4))
This doesn't work, and other variants I have tried (enclosing the conditions in
c() or moving the parentheses around) haven't seemed to work either.
Any suggestions for (1) the best way to incorporate multiple conditions with
where, and (2) while we are at it, how to operate on numeric vectors while carving out integer vectors from that same operation? The
colwise vignette did not seem to address multiple conditions with