diff --git a/R/data-frame.R b/R/data-frame.R index 82586d0..c8523b9 100644 --- a/R/data-frame.R +++ b/R/data-frame.R @@ -27,7 +27,7 @@ NULL #' @param x A list or `NULL` (see return) quick_df <- function(x = NULL) { if (is.null(x)) { - return(empty_df()) + return(.empty_df) } if (!is.list(x)) { @@ -38,12 +38,11 @@ quick_df <- function(x = NULL) { switch( length(n) + 1L, - empty_df(), + .empty_df, struct( x = x, class = "data.frame", - # # nolint next: seq_linter - names = names(x) %||% make.names(1:length(x)), + names = names(x) %||% seq_along(x), row.names = c(NA_integer_, -n) ), stop(cond_quick_df_list()) @@ -56,6 +55,13 @@ empty_df <- function() { struct(list(), "data.frame", row.names = integer(), names = character()) } +.empty_df <- structure( + list(), + class = "data.frame", + names = character(), + row.names = integer() +) + #' @export #' @rdname quick_df #' @param ... Columns as `tag = value` (passed to `list()`) diff --git a/tests/testthat/test-data-frame.R b/tests/testthat/test-data-frame.R index dcf2656..50fc102 100644 --- a/tests/testthat/test-data-frame.R +++ b/tests/testthat/test-data-frame.R @@ -20,3 +20,7 @@ test_that("quick_df()", { expect_identical(quick_df(NULL), empty_df()) expect_identical(quick_df(list()), empty_df()) }) + +test_that("empty_df", { + expect_identical(empty_df(), .empty_df) +})