FreesearchR/index.html

276 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Easy data analysis for clinicians • FreesearchR</title>
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="favicon-96x96.png">
<link rel="icon" type="”image/svg+xml”" href="favicon.svg">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" sizes="any" href="favicon.ico">
<link rel="manifest" href="site.webmanifest">
<script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet">
<script src="deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="deps/Montserrat-0.4.10/font.css" rel="stylesheet">
<link href="deps/Public_Sans-0.4.10/font.css" rel="stylesheet">
<link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
<link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
<script src="deps/headroom-0.11.0/headroom.min.js"></script><script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="deps/search-1.0.0/fuse.min.js"></script><script src="deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="pkgdown.js"></script><link href="extra.css" rel="stylesheet">
<meta property="og:title" content="Easy data analysis for clinicians">
<meta name="description" content="Easily evaluate and analyse clinical health data in your browser, either based on a hosted version or run on your own device. Import data from multiple sources, summarise, modify and visualise data and create regression models. Export key metrics and regression analysis results in a publication ready document format.">
<meta property="og:description" content="Easily evaluate and analyse clinical health data in your browser, either based on a hosted version or run on your own device. Import data from multiple sources, summarise, modify and visualise data and create regression models. Export key metrics and regression analysis results in a publication ready document format.">
<meta property="og:image" content="https://agdamsbo.github.io/FreesearchR/logo.png">
<script defer src="https://stats.freesearchr.org/script.js" data-website-id="85bfd1e8-2cbe-4a4a-aa34-1dfb2960905b"></script>
</head>
<body>
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
<a class="navbar-brand me-2" href="index.html">FreesearchR</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">26.3.4</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div id="navbar" class="collapse navbar-collapse ms-3">
<ul class="navbar-nav me-auto">
<li class="nav-item"><a class="nav-link" href="articles/FreesearchR.html">Get started</a></li>
<li class="nav-item"><a class="nav-link" href="reference/index.html">Reference</a></li>
<li class="nav-item dropdown">
<button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button>
<ul class="dropdown-menu" aria-labelledby="dropdown-articles">
<li><a class="dropdown-item" href="articles/data-types.html">Data types</a></li>
<li><a class="dropdown-item" href="articles/missingness.html">Missingness in data</a></li>
<li><a class="dropdown-item" href="articles/session.html">Session info</a></li>
<li><a class="dropdown-item" href="articles/visuals.html">On visuals</a></li>
</ul>
</li>
<li class="nav-item"><a class="nav-link" href="ROADMAP.html">Roadmap</a></li>
<li class="nav-item"><a class="nav-link" href="QA.html">Q&amp;A</a></li>
<li class="nav-item"><a class="nav-link" href="news/index.html">Changelog</a></li>
</ul>
<ul class="navbar-nav">
<li class="nav-item"><form class="form-inline" role="search">
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json">
</form></li>
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/agdamsbo/FreesearchR/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
</ul>
</div>
</div>
</nav><div class="container template-home">
<div class="row">
<main id="main" class="col-md-9"><div class="section level1">
<div class="page-header">
<img src="logo.png" class="logo" alt=""><h1 id="freesearchr-">FreesearchR
<a class="anchor" aria-label="anchor" href="#freesearchr-"></a>
</h1>
</div>
<!-- badges: start -->
<p>The <a href="https://app.freesearchr.org" class="external-link"><strong><em>FreesearchR</em></strong></a> is a simple, clinical health data exploration and analysis tool to democratise clinical research by assisting any researcher to easily evaluate and analyse data and export publication ready results.</p>
<p><a href="https://app.freesearchr.org" class="external-link"><strong><em>FreesearchR</em></strong></a> is free and open-source, and is <a href="https://app.freesearchr.org" class="external-link">accessible in your web browser through this link</a>. The app can also run locally, please <a href="#run-locally-on-your-own-machine-sec-run-locally">see below</a>.</p>
<p>All feedback is welcome and can be shared as a GitHub issue. Any suggestions on collaboration is much welcomed. Please reach out!</p>
<div class="float">
<img src="./reference/figures/demo.gif" alt="FreesearchR demo"><div class="figcaption">FreesearchR demo</div>
</div>
<div class="section level2">
<h2 id="motivation">Motivation<a class="anchor" aria-label="anchor" href="#motivation"></a>
</h2>
<p>This app has the following simple goals:</p>
<ol style="list-style-type: decimal">
<li><p>help the health clinician getting an overview of data in quality improvement projects and clinical research</p></li>
<li><p>help learners get a good start analysing data and coding in <em>R</em></p></li>
<li><p>ease quick data overview and basic visualisations for any clinical researcher</p></li>
</ol>
<p>Heres a polished and restructured version of your README section for clarity, conciseness, and user-friendliness:</p>
</div>
<div class="section level2">
<h2 id="run-locally-on-your-own-machine">Run Locally on Your Own Machine<a class="anchor" aria-label="anchor" href="#run-locally-on-your-own-machine"></a>
</h2>
<p>The <strong>FreesearchR</strong> app can be run locally on your machine, ensuring no data is transmitted externally. Below are the available options for setup and configuration.</p>
<div class="section level3">
<h3 id="configuration--data-loading">Configuration &amp; Data Loading<a class="anchor" aria-label="anchor" href="#configuration--data-loading"></a>
</h3>
<p>The app can be configured either by passing a named list to <code>run_app()</code> or by setting environment variables in a <strong>Docker Compose</strong> file. The following variables control data access and display behavior. If no values are provided, the app will use the defaults listed below.</p>
<p><strong>Configuration Variables</strong></p>
<table class="table">
<colgroup>
<col width="22%">
<col width="68%">
<col width="9%">
</colgroup>
<thead><tr class="header">
<th>Variable</th>
<th>Description</th>
<th>Default</th>
</tr></thead>
<tbody>
<tr class="odd">
<td><code>INCLUDE_GLOBALENV</code></td>
<td>Load datasets already present in the global R environment into the app</td>
<td><code>FALSE</code></td>
</tr>
<tr class="even">
<td><code>DATA_LIMIT_DEFAULT</code></td>
<td>Default number of observations for previewing or working with a dataset</td>
<td><code>10,000</code></td>
</tr>
<tr class="odd">
<td><code>DATA_LIMIT_UPPER</code></td>
<td>Maximum number of observations a user can set for the upper limit. If set to 0, no uppper limit is applied.</td>
<td><code>100,000</code></td>
</tr>
<tr class="even">
<td><code>DATA_LIMIT_LOWER</code></td>
<td>Minimum number of observations a user can set for the lower limit</td>
<td><code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div class="section level3">
<h3 id="run-from-r-or-rstudio">Run from R (or RStudio)<a class="anchor" aria-label="anchor" href="#run-from-r-or-rstudio"></a>
</h3>
<p>If youre working with data in R, <strong>FreesearchR</strong> is a quick and easy tool for exploratory analysis.</p>
<ol style="list-style-type: decimal">
<li><p><strong>Requirement:</strong> Ensure you have <a href="https://www.r-project.org/" class="external-link">R</a> installed, and optionally an editor like <a href="https://posit.co/download/rstudio-desktop/" class="external-link">RStudio</a>.</p></li>
<li>
<p>Open the <strong>R console</strong> and run the following code to install the <a href="https://github.com/agdamsbo/FreesearchR" class="external-link">FreesearchR</a> package and launch the app:</p>
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="op">!</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://devtools.r-lib.org/" class="external-link">"devtools"</a></span><span class="op">)</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/utils/install.packages.html" class="external-link">install.packages</a></span><span class="op">(</span><span class="st">"devtools"</span><span class="op">)</span></span>
<span><span class="fu">devtools</span><span class="fu">::</span><span class="fu"><a href="https://remotes.r-lib.org/reference/install_github.html" class="external-link">install_github</a></span><span class="op">(</span><span class="st">"agdamsbo/FreesearchR"</span><span class="op">)</span></span>
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://github.com/agdamsbo/FreesearchR" class="external-link">FreesearchR</a></span><span class="op">)</span></span>
<span><span class="co"># Load sample data (e.g., mtcars) to make it available in the app</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">mtcars</span><span class="op">)</span></span>
<span><span class="fu"><a href="reference/launch_FreesearchR.html">launch_FreesearchR</a></span><span class="op">(</span>INCLUDE_GLOBALENV<span class="op">=</span><span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div>
</li>
</ol>
<p>All the variables specified above can also be passed to the app on launch from R. Set DATA_LIMIT_UPPER=0 to remove upper data limit. This limit is set to protect the online app version from choking and crashing on large data sets.</p>
</div>
<div class="section level3">
<h3 id="running-with-docker-compose">Running with Docker Compose<a class="anchor" aria-label="anchor" href="#running-with-docker-compose"></a>
</h3>
<p>For advanced users, you can deploy <strong>FreesearchR</strong> using Docker. A data folder can be mounted to <code>/app/data</code> to automatically load supported file types (<code>.csv</code>, <code>.tsv</code>, <code>.txt</code>, <code>.xls</code>, <code>.xlsx</code>, <code>.ods</code>, <code>.dta</code>, <code>.rds</code>) at startup.</p>
<p>To mount a local data folder, add a <code>volumes</code> entry to your <code>docker-compose.yml</code> file:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a><span class="at"> </span><span class="fu">shiny</span><span class="kw">:</span></span>
<span id="cb2-3"><a href="#cb2-3" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> ghcr.io/agdamsbo/freesearchr:latest</span></span>
<span id="cb2-4"><a href="#cb2-4" tabindex="-1"></a><span class="at"> </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb2-5"><a href="#cb2-5" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> ./data:/app/data:ro</span></span>
<span id="cb2-6"><a href="#cb2-6" tabindex="-1"></a><span class="at"> </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb2-7"><a href="#cb2-7" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> INCLUDE_GLOBALENV=FALSE</span></span>
<span id="cb2-8"><a href="#cb2-8" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> DATA_LIMIT_DEFAULT=10000</span></span>
<span id="cb2-9"><a href="#cb2-9" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> DATA_LIMIT_UPPER=100000</span></span>
<span id="cb2-10"><a href="#cb2-10" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> DATA_LIMIT_LOWER=1</span></span>
<span id="cb2-11"><a href="#cb2-11" tabindex="-1"></a><span class="at"> </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb2-12"><a href="#cb2-12" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="st">'3838:3838'</span></span>
<span id="cb2-13"><a href="#cb2-13" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> on-failure</span></span></code></pre></div>
<ul>
<li><p>The <code>:ro</code> flag mounts the folder as <strong>read-only</strong>, preventing the app from modifying your original data files.</p></li>
<li><p>If no volume is mounted, the app will start without any preloaded datasets.</p></li>
</ul>
</div>
</div>
<div class="section level2">
<h2 id="code-of-conduct">Code of Conduct<a class="anchor" aria-label="anchor" href="#code-of-conduct"></a>
</h2>
<p>Please note that the <strong><em>FreesearchR</em></strong> project is published with a <a href="https://contributor-covenant.org/version/2/1/CODE_OF_CONDUCT.html" class="external-link">Contributor Code of Conduct</a>. By contributing to this project, you agree to abide by its terms.</p>
</div>
<div class="section level2">
<h2 id="translators">Translators<a class="anchor" aria-label="anchor" href="#translators"></a>
</h2>
<p>Thank you very much to all translators having helped to translate and validate translation drafts.</p>
</div>
<div class="section level2">
<h2 id="acknowledgements">Acknowledgements<a class="anchor" aria-label="anchor" href="#acknowledgements"></a>
</h2>
<p>Like any other project, this project was never possible without the great work of others. These are some of the sources and packages I have used:</p>
<ul>
<li><p>The <strong><em>FreesearchR</em></strong> app is built with <a href="https://shiny.posit.co/" class="external-link">Shiny</a> and based on <a href="https://www.r-project.org/" class="external-link"><em>R</em></a>.</p></li>
<li><p><a href="https://www.danieldsjoberg.com/gtsummary/" class="external-link">gtsummary</a>: superb and flexible way to create publication-ready analytical and summary tables.</p></li>
<li><p><a href="https://github.com/dreamRs" class="external-link">dreamRs</a>: maintainers of a broad selection of great extensions and tools for <a href="https://shiny.posit.co/" class="external-link">Shiny</a>.</p></li>
<li><p><a href="https://easystats.github.io/easystats/" class="external-link">easystats</a>: the <a href="https://easystats.github.io/performance/articles/check_model.html" class="external-link"><code>performance::check_model()</code></a> function was central in sparking the idea to create a data analysis tool.</p></li>
<li><p><a href="https://biogen-inc.github.io/IDEAFilter/" class="external-link">IDEAfilter</a>: a visually appealing data filter function based on the <a href="https://github.com/dgkf/shinyDataFilter" class="external-link">{shinyDataFilter}</a>.</p></li>
</ul>
<p>This project was all written by a human and not by any AI-based tools.</p>
<p>The online <strong><em>FreesearchR</em></strong> app contains a tracking script, transmitting minimal data on usage. No uploaded data is transmitted anywhere. Have a look at the <a href="https://analytics.gdamsbo.dk/share/2i4BNpMcDMB9lJvF/agdamsbo.shinyapps.io" class="external-link">tracking data here</a>. No tracking data is sent running the app locally (see above).</p>
</div>
</div>
</main><aside class="col-md-3"><div class="links">
<h2 data-toc-skip>Links</h2>
<ul class="list-unstyled">
<li><a href="https://github.com/agdamsbo/FreesearchR/" class="external-link">Browse source code</a></li>
<li><a href="https://github.com/agdamsbo/FreesearchR/issues" class="external-link">Report a bug</a></li>
</ul>
</div>
<div class="license">
<h2 data-toc-skip>License</h2>
<ul class="list-unstyled">
<li><a href="LICENSE.html">Full license</a></li>
<li><small>AGPL (&gt;= 3)</small></li>
</ul>
</div>
<div class="community">
<h2 data-toc-skip>Community</h2>
<ul class="list-unstyled">
<li><a href="CODE_OF_CONDUCT.html">Code of conduct</a></li>
</ul>
</div>
<div class="citation">
<h2 data-toc-skip>Citation</h2>
<ul class="list-unstyled">
<li><a href="authors.html#citation">Citing FreesearchR</a></li>
</ul>
</div>
<div class="developers">
<h2 data-toc-skip>Developers</h2>
<ul class="list-unstyled">
<li>Andreas Gammelgaard Damsbo <br><small class="roles"> Author, maintainer </small> <a href="https://orcid.org/0000-0002-7559-1154" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a> </li>
<li><a href="authors.html">More about authors...</a></li>
</ul>
</div>
<div class="dev-status">
<h2 data-toc-skip>Dev status</h2>
<ul class="list-unstyled">
<li><a href="https://lifecycle.r-lib.org/articles/stages.html#experimental" class="external-link"><img src="https://img.shields.io/badge/lifecycle-experimental-orange.svg" alt="Lifecycle: experimental"></a></li>
<li><a href="https://doi.org/10.5281/zenodo.14527429" class="external-link"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.14527429.svg" alt="DOI"></a></li>
<li><a href="https://github.com/agdamsbo/FreesearchR/actions/workflows/rhub.yaml" class="external-link"><img src="https://github.com/agdamsbo/FreesearchR/actions/workflows/rhub.yaml/badge.svg" alt="rhub"></a></li>
<li><a href="https://agdamsbo.shinyapps.io/FreesearchR/" class="external-link"><img src="https://img.shields.io/badge/Shiny-shinyapps.io-blue?style=flat&amp;labelColor=white&amp;logo=RStudio&amp;logoColor=blue" alt="FreesearchR"></a></li>
</ul>
</div>
</aside>
</div>
<footer><div class="pkgdown-footer-left">
<p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.2.0.</p>
</div>
<div class="pkgdown-footer-right">
<p>Developed by Andreas Gammelgaard Damsbo. Provided without <strong>any warranty</strong>.</p>
</div>
</footer>
</div>
</body>
</html>