[Rd] Recent list2DF changes

tim@t@yior m@iii@g oii hidde@eieph@@ts@co@uk tim@t@yior m@iii@g oii hidde@eieph@@ts@co@uk
Thu Feb 10 23:51:28 CET 2022


I noticed list2DF has recently been altered in R-devel to no longer replicate elements to the same length (instead giving an error). If useful, I *think* the following alternative would give the same performance improvements but maintain the current (4.1.2) recycling behaviour.

list2DF2 <- function (x = list(), nrow = NULL)
{
    stopifnot(is.list(x), is.null(nrow) || nrow >= 0L)
    if (n <- length(x)) {
        nn <- lengths(x)
        if (is.null(nrow))
            nrow <- max(nn, 0L)
        if (!all(nn==nrow))
            x <- lapply(x, rep_len, nrow)
    }
    else {
        if (is.null(nrow))
            nrow <- 0L
    }
    if (is.null(names(x)))
        names(x) <- character(n)
    class(x) <- "data.frame"
    attr(x, "row.names") <- .set_row_names(nrow)
    x
}

Tim



More information about the R-devel mailing list