What's New in R 3.5.0?

A complete list of the changes in R 3.5.0 can be found here. I’m picking out two (personal) highlights here.

  • Duplicate labels allowed in factor().

    > factor(0:3, levels = 0:3, c("old", "old", "new", "new"))
    [1] old old new new
    Levels: old new
  • Compact internal representation of arithmetic sequences (only the first and last values are stored). This change is courtesy of the ALTREP framework. This means that you can create astronomically large sequences without running into memory constraints.

    # R-3.4.4
    > x <- 1:1e9
    Error: cannot allocate vector of size 3.7 Gb
    # R-3.5.0
    > x <- 1:1e9
    > x <- 1:1e12

The second item above is going to have serious efficiency impacts and enable some actions that were previous impossible due to memory constraints.