Limiting the number of decimals in a dataframe (R)

decimal, limit, maxlength, r

Solution

Here `is.num` is `TRUE` for numeric columns and `FALSE` otherwise. We then apply `round` to the numeric columns:

is.num <- sapply(DF, is.numeric)
DF[is.num] <- lapply(DF[is.num], round, 8)

If what you meant was not that you need to change the data frame but just that you want to display the data frame to 8 digits then it's just:

print(DF, digits = 8)

In dplyr 1.0.0 and later one can use `across` within `mutate` like this:

library(dplyr)
DF %>% mutate(across(where(is.numeric), ~ round(., 8)))

Problem

I would like to limit the number of decimals when a data frame is imported. My `.txt` input has 16 decimals in each row for the column `Value`. My dataframe look like this: ``` Value 0.202021561664556 0.202021561664556 0.202021561664556 0.202021561664556 ... ``` My expected dataframe ``` Value 0.20202156 0.20202156 0.20202156 0.20202156 ... ``` Real input (DF) that does not work: ``` DF <- "NE001358.Log.R.Ratio -0.0970369274475688 0.131893549586039 0.0629266495860389 0.299559132381831 -0.0128804337656807 0.0639743960526874 0.0271669351886552 0.322395363972391 0.179591292893632" DF <- read.table(text=DF, header = TRUE) ```

Original source