<!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.0"><title>Nest and unnest rvar columns in data frames — nest_rvars • tidybayes</title><!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png"><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/paper/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><meta property="og:title" content="Nest and unnest rvar columns in data frames — nest_rvars"><meta property="og:description" content="Converts between data-frame-of-rvars format and long-data-frame-of-draws
formats by nesting or unnesting all columns containing posterior::rvar
objects."><meta property="og:image" content="https://mjskay.github.io/tidybayes/logo.svg"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=UA-93322-5"></script><script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-93322-5');
</script></head><body data-spy="scroll" data-target="#toc">


    <div class="container template-reference-topic">
      <header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <span class="navbar-brand">
        <a class="navbar-link" href="../index.html">tidybayes</a>
        <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">3.0.7</span>
      </span>
    </div>

    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav"><li>
  <a href="../articles/tidybayes.html">Get started</a>
</li>
<li>
  <a href="../reference/index.html">Reference</a>
</li>
<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
    Articles

    <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu"><li>
      <a href="../articles/tidy-brms.html">Extracting and visualizing tidy draws from brms models</a>
    </li>
    <li>
      <a href="../articles/tidy-posterior.html">Using tidybayes with the posterior package</a>
    </li>
    <li>
      <a href="../articles/tidy-rstanarm.html">Extracting and visualizing tidy draws from rstanarm models</a>
    </li>
    <li>
      <a href="../articles/tidybayes-residuals.html">Extracting and visualizing tidy residuals from Bayesian models</a>
    </li>
  </ul></li>
<li>
  <a href="../news/index.html">Changelog</a>
</li>
      </ul><ul class="nav navbar-nav navbar-right"><li>
  <a href="https://github.com/mjskay/tidybayes/" class="external-link">
    <span class="fab fa-github fa-lg"></span>

  </a>
</li>
      </ul></div><!--/.nav-collapse -->
  </div><!--/.container -->
</div><!--/.navbar -->



      </header><div class="row">
  <div class="col-md-9 contents">
    <div class="page-header">
    <h1>Nest and unnest <code>rvar</code> columns in data frames</h1>
    <small class="dont-index">Source: <a href="https://github.com/mjskay/tidybayes/blob/HEAD/R/nest_rvars.R" class="external-link"><code>R/nest_rvars.R</code></a></small>
    <div class="hidden name"><code>nest_rvars.Rd</code></div>
    </div>

    <div class="ref-description">
    <p>Converts between data-frame-of-<code>rvar</code>s format and long-data-frame-of-draws
formats by nesting or unnesting all columns containing <code><a href="https://mc-stan.org/posterior/reference/rvar.html" class="external-link">posterior::rvar</a></code>
objects.</p>
    </div>

    <div id="ref-usage">
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">nest_rvars</span><span class="op">(</span><span class="va">data</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">unnest_rvars</span><span class="op">(</span><span class="va">data</span><span class="op">)</span></span></code></pre></div>
    </div>

    <div id="arguments">
    <h2>Arguments</h2>


<dl><dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt>
<dd><p>A data frame to nest or unnest.</p><ul><li><p>For <code>nest_rvars()</code>, the data frame should be in long-data-frame-of-draws
format; i.e. it should contain a <code>.draw</code> column (and optionally <code>.chain</code>
and <code>.iteration</code> columns) indexing draws. It should be a grouped by any
columns that are not intended to be nested.</p></li>
<li><p>For <code>unnest_rvars()</code>, the data frame should have at least one column that
is an <code><a href="https://mc-stan.org/posterior/reference/rvar.html" class="external-link">rvar</a></code>; all <code>rvar</code> columns will be unnested.</p></li>
</ul></dd>

</dl></div>
    <div id="value">
    <h2>Value</h2>
    <p>For <code>nest_rvars()</code>, returns a data frame without <code>.chain</code>, <code>.iteration</code>, and
<code>.draw</code> columns, where all non-grouped columns have been converted to <code><a href="https://mc-stan.org/posterior/reference/rvar.html" class="external-link">rvar</a></code>s.</p>
<p>For <code>unnest_rvars()</code>, returns a data frame with <code>.chain</code>, <code>.iteration</code>, and
<code>.draw</code> columns added, where every <code><a href="https://mc-stan.org/posterior/reference/rvar.html" class="external-link">rvar</a></code> column in the input has been
converted to (one or more) columns containing draws from those <code><a href="https://mc-stan.org/posterior/reference/rvar.html" class="external-link">rvar</a></code>s
in long format. The result is grouped by all non-<code><a href="https://mc-stan.org/posterior/reference/rvar.html" class="external-link">rvar</a></code> columns in the
input; this ensures that <code>nest_rvars(unnest_rvars(x))</code> returns <code>x</code>.</p>
    </div>

    <div id="ref-examples">
    <h2>Examples</h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span>
<span class="r-in"><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://dplyr.tidyverse.org" class="external-link">dplyr</a></span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><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">RankCorr</span>, package <span class="op">=</span> <span class="st">"ggdist"</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># here's a data frame with some rvars</span></span></span>
<span class="r-in"><span><span class="va">rvar_df</span> <span class="op">=</span> <span class="va">RankCorr</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span>  <span class="fu"><a href="spread_rvars.html">spread_rvars</a></span><span class="op">(</span><span class="va">b</span><span class="op">[</span><span class="va">i</span>,<span class="op">]</span>, <span class="va">tau</span><span class="op">[</span><span class="va">i</span><span class="op">]</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">rvar_df</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 3 × 3</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>       i          b[,1]          [,2]            [,3]           [,4]         tau</span>
<span class="r-out co"><span class="r-pr">#&gt;</span>   <span style="color: #949494; font-style: italic;">&lt;int&gt;</span>     <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>      <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>     <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;rvar[1d]&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span>     1  -1.08 <span style="color: #949494;">± 0.095</span>  -1.82 <span style="color: #949494;">± 0.14</span>   0.176 <span style="color: #949494;">± 0.071</span>  -0.101 <span style="color: #949494;">± 0.12</span>  6.0 <span style="color: #949494;">± 0.53</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span>     2  -0.74 <span style="color: #949494;">± 0.146</span>   0.10 <span style="color: #949494;">± 0.25</span>  -0.178 <span style="color: #949494;">± 0.120</span>   0.268 <span style="color: #949494;">± 0.22</span>  3.3 <span style="color: #949494;">± 0.53</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span>     3  -0.34 <span style="color: #949494;">± 0.144</span>  -0.73 <span style="color: #949494;">± 0.23</span>   0.069 <span style="color: #949494;">± 0.121</span>   0.084 <span style="color: #949494;">± 0.21</span>  3.7 <span style="color: #949494;">± 0.52</span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># we can unnest it into long format.</span></span></span>
<span class="r-in"><span><span class="co"># note how the result is grouped by all non-rvar input columns,</span></span></span>
<span class="r-in"><span><span class="co"># and nested indices in `b` are converted into columns.</span></span></span>
<span class="r-in"><span><span class="va">draws_df</span> <span class="op">=</span> <span class="va">rvar_df</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span>  <span class="fu">unnest_rvars</span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">draws_df</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 3,000 × 9</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># Groups:   i [3]</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>        i `b[1,1]` `b[1,2]` `b[1,3]`  `b[1,4]`   tau .chain .iteration .draw</span>
<span class="r-out co"><span class="r-pr">#&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;int&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>     <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span> <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;int&gt;</span>      <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 1</span>     1   -<span style="color: #BB0000;">0.927</span>    -<span style="color: #BB0000;">2.09</span>   0.111  -<span style="color: #BB0000;">0.000</span><span style="color: #BB0000; text-decoration: underline;">774</span>  5.79      1          1     1</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 2</span>     1   -<span style="color: #BB0000;">0.979</span>    -<span style="color: #BB0000;">1.90</span>   0.258  -<span style="color: #BB0000;">0.232</span>     6.26      1          2     2</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 3</span>     1   -<span style="color: #BB0000;">1.15</span>     -<span style="color: #BB0000;">1.79</span>   0.256  -<span style="color: #BB0000;">0.236</span>     7.38      1          3     3</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 4</span>     1   -<span style="color: #BB0000;">1.09</span>     -<span style="color: #BB0000;">1.67</span>   0.164  -<span style="color: #BB0000;">0.112</span>     5.97      1          4     4</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 5</span>     1   -<span style="color: #BB0000;">1.20</span>     -<span style="color: #BB0000;">1.50</span>   0.245  -<span style="color: #BB0000;">0.232</span>     6.01      1          5     5</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 6</span>     1   -<span style="color: #BB0000;">1.07</span>     -<span style="color: #BB0000;">1.83</span>   0.083<span style="text-decoration: underline;">9</span>  0.047<span style="text-decoration: underline;">9</span>    7.03      1          6     6</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 7</span>     1   -<span style="color: #BB0000;">1.11</span>     -<span style="color: #BB0000;">1.82</span>   0.070<span style="text-decoration: underline;">2</span>  0.038<span style="text-decoration: underline;">2</span>    7.39      1          7     7</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 8</span>     1   -<span style="color: #BB0000;">1.06</span>     -<span style="color: #BB0000;">1.94</span>   0.060<span style="text-decoration: underline;">0</span>  0.043<span style="text-decoration: underline;">8</span>    5.98      1          8     8</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 9</span>     1   -<span style="color: #BB0000;">0.831</span>    -<span style="color: #BB0000;">2.19</span>   0.353  -<span style="color: #BB0000;">0.413</span>     6.75      1          9     9</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">10</span>     1   -<span style="color: #BB0000;">0.986</span>    -<span style="color: #BB0000;">1.86</span>   0.082<span style="text-decoration: underline;">7</span>  0.059<span style="text-decoration: underline;">1</span>    6.76      1         10    10</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># ℹ 2,990 more rows</span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># calling nest_rvars() again on the result of unnest_rvars()</span></span></span>
<span class="r-in"><span><span class="co"># recovers the original data frame</span></span></span>
<span class="r-in"><span><span class="fu">nest_rvars</span><span class="op">(</span><span class="va">draws_df</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 3 × 3</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># Groups:   i [3]</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>       i          b[,1]          [,2]            [,3]           [,4]         tau</span>
<span class="r-out co"><span class="r-pr">#&gt;</span>   <span style="color: #949494; font-style: italic;">&lt;int&gt;</span>     <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>      <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>     <span style="color: #949494; font-style: italic;">&lt;rvar[,1]&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;rvar[1d]&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span>     1  -1.08 <span style="color: #949494;">± 0.095</span>  -1.82 <span style="color: #949494;">± 0.14</span>   0.176 <span style="color: #949494;">± 0.071</span>  -0.101 <span style="color: #949494;">± 0.12</span>  6.0 <span style="color: #949494;">± 0.53</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span>     2  -0.74 <span style="color: #949494;">± 0.146</span>   0.10 <span style="color: #949494;">± 0.25</span>  -0.178 <span style="color: #949494;">± 0.120</span>   0.268 <span style="color: #949494;">± 0.22</span>  3.3 <span style="color: #949494;">± 0.53</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span>     3  -0.34 <span style="color: #949494;">± 0.144</span>  -0.73 <span style="color: #949494;">± 0.23</span>   0.069 <span style="color: #949494;">± 0.121</span>   0.084 <span style="color: #949494;">± 0.21</span>  3.7 <span style="color: #949494;">± 0.52</span></span>
<span class="r-in"><span></span></span>
</code></pre></div>
    </div>
  </div>
  <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
    <nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
    </nav></div>
</div>


      <footer><div class="copyright">
  <p></p><p>Developed by <a href="https://www.mjskay.com" class="external-link">Matthew Kay</a>.</p>
</div>

<div class="pkgdown">
  <p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.0.</p>
</div>

      </footer></div>






  </body></html>

