Issue #30
new
The function checks if the object is a data.frame
before it checks if the object is a tbl
and ultimately returns the incorrect value - here’s an example:
library(DBI) library(dplyr) library(assertive) .data <- data.frame(A = rep(LETTERS[1:3], 3), B = sample(9)) conn <- dbConnect(RSQLite::SQLite(), ":memory:") dbWriteTable(conn, "table1", .data) query <- "select * from table1" .tbl <- tbl(conn, sql(query)) dplyr::is.tbl(.tbl) # [1] TRUE assertive::is_tbl(.tbl) # [1] FALSE # Cause of failure: .tbl is not of class 'data.frame'; it has class 'tbl_SQLiteConnection, # tbl_dbi, tbl_sql, tbl_azy, tbl'.
Possible solution:
# Original is_tbl function: function (x, .xname = get_name_in_parent(x)) { if (!(ok <- is_data.frame(x, .xname))) { return(ok) } is2(x, "tbl", .xname) } # Possible solution? function (x, .xname = get_name_in_parent(x)) { is2(x, "tbl", .xname) }