<!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>Fill a Gap in a Matrix — fillGapMatrix • oce</title><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/font-awesome-6.4.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.4.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><meta property="og:title" content="Fill a Gap in a Matrix — fillGapMatrix"><meta name="description" content="Sequences of NA values are replaced with values computed by linear
interpolation along rows and/or columns, provided that the neighbouring
values are sufficiently close, as defined by the fillgap parameter.  If
interpolation can be done across both the row and column directions, then the
two values are averaged."><meta property="og:description" content="Sequences of NA values are replaced with values computed by linear
interpolation along rows and/or columns, provided that the neighbouring
values are sufficiently close, as defined by the fillgap parameter.  If
interpolation can be done across both the row and column directions, then the
two values are averaged."></head><body>
    <a href="#main" class="visually-hidden-focusable">Skip to contents</a>


    <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="light" aria-label="Site navigation"><div class="container">

    <a class="navbar-brand me-2" href="../index.html">oce</a>

    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">1.8-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="active 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/A_oce.html">1. Introduction to Oce</a></li>
    <li><a class="dropdown-item" href="../articles/B_ctd.html">2. Analysis of CTD data</a></li>
    <li><a class="dropdown-item" href="../articles/C_adp.html">3. Analysis of acoustic-Doppler data</a></li>
    <li><a class="dropdown-item" href="../articles/D_map_projections.html">4. Using map projections</a></li>
    <li><a class="dropdown-item" href="../articles/E_flags.html">5. Dealing with data-quality flags</a></li>
    <li><a class="dropdown-item" href="../articles/F_subclassing.html">6. Subclassing oce objects</a></li>
    <li><a class="dropdown-item" href="../articles/G_altering_defaults.html">7. Altering oce Defaults</a></li>
    <li><a class="dropdown-item" href="../articles/H_tides.html">8. Tidal Analysis</a></li>
  </ul></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/dankelley/oce/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li>
      </ul></div>


  </div>
</nav><div class="container template-reference-topic">
<div class="row">
  <main id="main" class="col-md-9"><div class="page-header">

      <h1>Fill a Gap in a Matrix</h1>
      <small class="dont-index">Source: <a href="https://github.com/dankelley/oce/blob/HEAD/R/misc.R" class="external-link"><code>R/misc.R</code></a></small>
      <div class="d-none name"><code>fillGapMatrix.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p>Sequences of NA values are replaced with values computed by linear
interpolation along rows and/or columns, provided that the neighbouring
values are sufficiently close, as defined by the <code>fillgap</code> parameter.  If
interpolation can be done across both the row and column directions, then the
two values are averaged.</p>
    </div>

    <div class="section level2">
    <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">fillGapMatrix</span><span class="op">(</span><span class="va">m</span>, fillgap <span class="op">=</span> <span class="fl">1</span>, debug <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"oceDebug"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div>
    </div>

    <div class="section level2">
    <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2>


<dl><dt id="arg-m">m<a class="anchor" aria-label="anchor" href="#arg-m"></a></dt>
<dd><p>a numeric matrix.</p></dd>


<dt id="arg-fillgap">fillgap<a class="anchor" aria-label="anchor" href="#arg-fillgap"></a></dt>
<dd><p>a vector containing 1 or 2 integers, indicating the maximum
width of gaps to be filled.  If just one number is given, it is repeated to
create the pair.  The first element of the pair is the maximum gap height
(i.e. row separation in the matrix) that can be filled, and the second is the
maximum gap width. The default value of 1 means that only gaps of width or
height 1 can be filled. As an exception to these rules, a negative value
means to fill gaps regardless of size. It is an error to specify a <code>fillgap</code>
value that is less than 1.</p></dd>


<dt id="arg-debug">debug<a class="anchor" aria-label="anchor" href="#arg-debug"></a></dt>
<dd><p>an integer specifying whether debugging information is
to be printed during the processing. This is a general parameter that
is used by many <code>oce</code> functions. Generally, setting <code>debug=0</code>
turns off the printing, while higher values suggest that more information
be printed. If one function calls another, it usually reduces the value of
<code>debug</code> first, so that a user can often obtain deeper debugging
by specifying higher <code>debug</code> values.</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2>
    <p>fillGapMatrix returns matrix, with NA values replaced
by interpolated values as dictated by the function parameters.</p>
    </div>
    <div class="section level2">
    <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2>
    <p>Dan Kelley</p>
    </div>

    <div class="section level2">
    <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><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://dankelley.github.io/oce/">oce</a></span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">m</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">matrix</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">20</span>, nrow <span class="op">=</span> <span class="fl">5</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="co"># Example 1: interpolate past across gaps of width/height equal to 1</span></span></span>
<span class="r-in"><span><span class="va">m</span><span class="op">[</span><span class="fl">2</span>, <span class="fl">3</span><span class="op">]</span> <span class="op">&lt;-</span> <span class="cn">NA</span></span></span>
<span class="r-in"><span><span class="va">m</span><span class="op">[</span><span class="fl">3</span>, <span class="fl">3</span><span class="op">]</span> <span class="op">&lt;-</span> <span class="cn">NA</span></span></span>
<span class="r-in"><span><span class="va">m</span><span class="op">[</span><span class="fl">4</span>, <span class="fl">2</span><span class="op">]</span> <span class="op">&lt;-</span> <span class="cn">NA</span></span></span>
<span class="r-in"><span><span class="va">m</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>      [,1] [,2] [,3] [,4]</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1,]    1    6   11   16</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [2,]    2    7   NA   17</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [3,]    3    8   NA   18</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [4,]    4   NA   14   19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [5,]    5   10   15   20</span>
<span class="r-in"><span><span class="fu">fillGapMatrix</span><span class="op">(</span><span class="va">m</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>      [,1] [,2] [,3] [,4]</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1,]    1    6   11   16</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [2,]    2    7   12   17</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [3,]    3    8   13   18</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [4,]    4    9   14   19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [5,]    5   10   15   20</span>
<span class="r-in"><span><span class="co"># Example 2: cannot interpolate across larger groups by default</span></span></span>
<span class="r-in"><span><span class="va">m</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">matrix</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">20</span>, nrow <span class="op">=</span> <span class="fl">5</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">m</span><span class="op">[</span><span class="fl">2</span><span class="op">:</span><span class="fl">3</span>, <span class="fl">2</span><span class="op">:</span><span class="fl">3</span><span class="op">]</span> <span class="op">&lt;-</span> <span class="cn">NA</span></span></span>
<span class="r-in"><span><span class="va">m</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>      [,1] [,2] [,3] [,4]</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1,]    1    6   11   16</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [2,]    2   NA   NA   17</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [3,]    3   NA   NA   18</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [4,]    4    9   14   19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [5,]    5   10   15   20</span>
<span class="r-in"><span><span class="fu">fillGapMatrix</span><span class="op">(</span><span class="va">m</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>      [,1] [,2] [,3] [,4]</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1,]    1    6   11   16</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [2,]    2   NA   NA   17</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [3,]    3   NA   NA   18</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [4,]    4    9   14   19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [5,]    5   10   15   20</span>
<span class="r-in"><span><span class="co"># Example 3: increasing gap lets us cover gaps of size 1 or 2</span></span></span>
<span class="r-in"><span><span class="fu">fillGapMatrix</span><span class="op">(</span><span class="va">m</span>, fillgap <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>      [,1] [,2] [,3] [,4]</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1,]    1    6   11   16</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [2,]    2    7   12   17</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [3,]    3    8   13   18</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [4,]    4    9   14   19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [5,]    5   10   15   20</span>
<span class="r-in"><span></span></span>
</code></pre></div>
    </div>
  </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
    </nav></aside></div>


    <footer><div class="pkgdown-footer-left">
  <p>Developed by Dan Kelley, Clark Richards.</p>
</div>

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

    </footer></div>





  </body></html>

