1set_class <- function(x, class = NULL) {
2    if (is.null(class)) {
3        return(x)
4    } else if ("data.table" %in% class) {
5        if (inherits(x, "data.table")) {
6            return(x)
7        }
8        return(data.table::as.data.table(x))
9    } else if ("tibble" %in% class || "tbl_df" %in% class || "tbl" %in% class) {
10        if (inherits(x, "tbl")) {
11            return(x)
12        }
13        return(tibble::as_tibble(x))
14    }
15    out <- structure(x, class = "data.frame")
16    # add row names in case `x` wasn't already a data frame (e.g., matlab list)
17    if (!length(rownames(out))) {
18        rownames(out) <- as.character(seq_len(length(out[,1L,drop = TRUE])))
19    }
20    return(out)
21}
22