## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>",
                      error = FALSE, warning = FALSE, message = FALSE)

## ----install, eval=FALSE------------------------------------------------------
# if (!require("BiocManager"))
#     install.packages("BiocManager")
# BiocManager::install("DuckDBDataFrame")

## ----load---------------------------------------------------------------------
library(DuckDBDataFrame)

## ----quickstart---------------------------------------------------------------
library(arrow)
mtcars_df <- cbind(model = rownames(mtcars), mtcars)
path <- tempfile(fileext = ".parquet")
write_parquet(mtcars_df, path)

df <- DuckDBDataFrame(path, datacols = colnames(mtcars),
                      keycol = list(model = mtcars_df$model))
df

## ----quickstart-ops-----------------------------------------------------------
dim(df)
df$mpg[1:5]

## ----columns------------------------------------------------------------------
df[, c("mpg", "cyl", "hp")]

## ----rows---------------------------------------------------------------------
df[df$mpg > 25, c("mpg", "cyl")]

## ----computed-----------------------------------------------------------------
df$efficiency <- df$mpg / df$hp
df[1:3, c("mpg", "hp", "efficiency")]

## ----metadata-----------------------------------------------------------------
mcols(df) <- DataFrame(row.names = colnames(df),
                       label = sub("\\..*", "", colnames(df)))
mcols(df)[1:3, , drop = FALSE]

## ----column-flavors-----------------------------------------------------------
eff <- df$mpg / df$hp     # DuckDBColumn
class(eff)
as.vector(eff)[1:5]       # materialize on demand

## ----sql----------------------------------------------------------------------
sql_call(df$mpg, "round", 0)[1:5]

## ----sessioninfo--------------------------------------------------------------
sessionInfo()

