---
title: "Install R package ctrdata"
author: "Ralf Herold"
date: 2026-03-07
output:
  rmarkdown::html_vignette:
    toc: true
vignette: >
  %\VignetteIndexEntry{Install R package ctrdata}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8} 
editor_options:
  chunk_output_type: console
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(eval = FALSE)
```

## Install package `ctrdata` on an R system

The R Project website ([https://www.r-project.org/](https://www.r-project.org/)) provides installers for the R system. It can be used with software products and graphical user interfaces such as [R Studio](https://posit.co/products/open-source/rstudio) or from [Visual Studio Code](https://github.com/REditorSupport/vscode-R). 

General information on the `ctrdata` package is available here: [https://rfhb.github.io/ctrdata/](https://rfhb.github.io/ctrdata/).

In R, execute:

```{r install_ctrdata, eval=FALSE}
install.packages("ctrdata")
```

For using the development version of package `ctrdata`, install from GitHub:

```{r, eval=FALSE}
# install package under development
install.packages(c("remotes"))
remotes::install_github("rfhb/ctrdata", dependencies = TRUE, build_vignettes = TRUE)
```

Either of the above should install package `ctrdata` into the user's library.

## Databases to use

At this time, a PostgreSQL, DuckDB, an SQLite or a MongoDB (local or remote) database can be used with the package `ctrdata`. A full SQLite database is provided in the R package [`RSQLite`](https://rsqlite.r-dbi.org/). Suggested installation instructions for PostgreSQL are [here](https://www.postgresql.org/download/) and for a local MongoDB server are [here](https://www.mongodb.com/docs/manual/administration/install-community/); a remote MongoDB database server is accessible [here](https://www.mongodb.com/products/platform). See [here](https://github.com/ropensci/nodbi#benchmark) for a speed comparison of the databases; recommended: DuckDB, PostgreSQL or MongoDB local server. 

Purpose | Function call
-------------------- | --------------------
Create **SQLite** database connection | `dbc <- nodbi::src_sqlite(dbname = "name_of_my_database", collection = "name_of_my_collection")`
Create **DuckDB** database connection* | `dbc <- nodbi::src_duckdb(dbname = "name_of_my_database", collection = "name_of_my_collection")`
Create **MongoDB** database connection | `dbc <- nodbi::src_mongo(db = "name_of_my_database", collection = "name_of_my_collection")`
Create **PostgreSQL** database connection | `dbc <- nodbi::src_postgres(dbname = "name_of_my_database"); dbc[["collection"]] <- "name_of_my_collection"`
Use connection with `ctrdata` functions | `ctrdata::{ctrLoadQueryIntoDb, dbQueryHistory, dbFindIdsUniqueTrials, dbFindFields, dbGetFieldsIntoDf}(con = dbc, ...)`

* For DuckDB, the JSON extension is needed which can be permanently downloaded as follows:

```{r }
# user to specify their directory of choice;
# remember to set option for each new R session
options(duckdb.extension_directory = "~/.duckdb_extensions")

# load and store in above-mentioned 
# directory; only once to be executed
DBI::dbExecute(duckdb::dbConnect(duckdb::duckdb()), 'INSTALL json;')
```


## Attach package `ctrdata`

After completing the installation, attach the package from the user's library:

```{r attach_ctrdata}
library(ctrdata)
```

## Credit to clinical trial registers

Remember to respect the registers' terms and conditions (see `ctrOpenSearchPagesInBrowser(copyright = TRUE)`). 

## Quote or reference `ctrdata`

In any publication, please cite this package as follows: 

```{r cite_ctrdata, eval=TRUE, results='asis', echo=c(-1)}
cat(rev(format(citation("ctrdata"), style = "text")), sep = " or <br/>")
```
