<!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>Handle Flags in argo Objects — handleFlags,argo-method • 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="Handle Flags in argo Objects — handleFlags,argo-method"><meta name="description" content="Data-quality flags are stored in the metadata
slot of oce objects in a
list named flags.
The present function (a generic that has specialized versions
for various data classes) provides a way to
manipulate the contents of the data slot, based on
such data-quality flags. For example, a common operation is to replace
erroneous data with NA.
If the flags within object's metadata slot is empty,
then object is returned, unaltered.
Otherwise, handleFlags examines object@metadata$flags
in the context of the flags argument, and then
carries out actions that are specified by the actions argument.
By default, this sets the returned data entries to NA,
wherever the corresponding metadata$flag values
signal unreliable data. To maintain a hint as to why
data were changed, metadata$flags in the
returned value is a direct copy of the corresponding
entry in object."><meta property="og:description" content="Data-quality flags are stored in the metadata
slot of oce objects in a
list named flags.
The present function (a generic that has specialized versions
for various data classes) provides a way to
manipulate the contents of the data slot, based on
such data-quality flags. For example, a common operation is to replace
erroneous data with NA.
If the flags within object's metadata slot is empty,
then object is returned, unaltered.
Otherwise, handleFlags examines object@metadata$flags
in the context of the flags argument, and then
carries out actions that are specified by the actions argument.
By default, this sets the returned data entries to NA,
wherever the corresponding metadata$flag values
signal unreliable data. To maintain a hint as to why
data were changed, metadata$flags in the
returned value is a direct copy of the corresponding
entry in object."></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>Handle Flags in argo Objects</h1>
      <small class="dont-index">Source: <a href="https://github.com/dankelley/oce/blob/HEAD/R/argo.R" class="external-link"><code>R/argo.R</code></a></small>
      <div class="d-none name"><code>handleFlags-argo-method.Rd</code></div>
    </div>

    <div class="ref-description section level2">
    <p>Data-quality flags are stored in the <code>metadata</code>
slot of <a href="oce-class.html">oce</a> objects in a
<a href="https://rdrr.io/r/base/list.html" class="external-link">list</a> named <code>flags</code>.
The present function (a generic that has specialized versions
for various data classes) provides a way to
manipulate the contents of the <code>data</code> slot, based on
such data-quality flags. For example, a common operation is to replace
erroneous data with <code>NA</code>.</p>
<p>If the <code>flags</code> within <code>object</code>'s <code>metadata</code> slot is empty,
then <code>object</code> is returned, unaltered.
Otherwise, <code>handleFlags</code> examines <code>object@metadata$flags</code>
in the context of the <code>flags</code> argument, and then
carries out actions that are specified by the <code>actions</code> argument.
By default, this sets the returned <code>data</code> entries to <code>NA</code>,
wherever the corresponding <code>metadata$flag</code> values
signal unreliable data. To maintain a hint as to why
<code>data</code> were changed, <code>metadata$flags</code> in the
returned value is a direct copy of the corresponding
entry in <code>object</code>.</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="co"># S4 method for class 'argo'</span></span>
<span><span class="fu"><a href="handleFlags.html">handleFlags</a></span><span class="op">(</span></span>
<span>  object <span class="op">=</span> <span class="st">"oce"</span>,</span>
<span>  flags <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  actions <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span>  where <span class="op">=</span> <span class="cn">NULL</span>,</span>
<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>
<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-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt>
<dd><p>an <a href="argo-class.html">argo</a> object.</p></dd>


<dt id="arg-flags">flags<a class="anchor" aria-label="anchor" href="#arg-flags"></a></dt>
<dd><p>A <a href="https://rdrr.io/r/base/list.html" class="external-link">list</a> specifying flag values upon which
actions will be taken. This can take two forms.</p><ul><li><p>In the first form, the
list has named elements each containing a vector of integers. For example,
salinities flagged with values of 1 or 3:9 would be specified
by <code>flags=list(salinity=c(1,3:9))</code>. Several data items can be specified,
e.g. <code>flags=list(salinity=c(1,3:9), temperature=c(1,3:9))</code> indicates
that the actions are to take place for both salinity and temperature.</p></li>
<li><p>In the second form, <code>flags</code> is a list holding a single <em>unnamed</em> vector, and
this means to apply the actions to <em>all</em> the data entries.  For example,
<code>flags=list(c(1,3:9))</code> means to apply not just to salinity and temperature,
but to everything within the <code>data</code> slot.</p></li>
</ul><p>If <code>flags</code> is not provided, then <code><a href="defaultFlags.html">defaultFlags()</a></code> is called, to try to
determine a reasonable default.</p></dd>


<dt id="arg-actions">actions<a class="anchor" aria-label="anchor" href="#arg-actions"></a></dt>
<dd><p>an optional <a href="https://rdrr.io/r/base/list.html" class="external-link">list</a> that contains items with
names that match those in the <code>flags</code> argument.  If <code>actions</code>
is not supplied, the default will be to set all values identified by
<code>flags</code> to <code>NA</code>; this can also be specified by
specifying <code>actions=list("NA")</code>. It is also possible to specify
functions that calculate replacement values. These are provided
with <code>object</code> as the single argument, and must return a
replacement for the data item in question.
See “Details” for the default that is used if <code>actions</code> is not supplied.</p></dd>


<dt id="arg-where">where<a class="anchor" aria-label="anchor" href="#arg-where"></a></dt>
<dd><p>an optional character value that permits the function to work with
objects that store flags in e.g. <code>object@metadata$flags$where</code>
instead of in <code>object@metadata$flags</code>, and data within
<code>object@data$where</code> instead of within <code>object@data</code>. The
default value of <code>NULL</code> means to look withing <code>object@metadata</code>
itself, and this is the default within <code>oce</code>.  (The purpose of <code>where</code>
is to make <code>oce</code> extensible by other packages, which may choose to store
data two levels deep in the <code>data</code> slot.)</p></dd>


<dt id="arg-debug">debug<a class="anchor" aria-label="anchor" href="#arg-debug"></a></dt>
<dd><p>An optional integer specifying the degree of debugging, with
value 0 meaning to skip debugging and 1 or higher meaning to print some
information about the arguments and the data. It is usually a good idea to set
this to 1 for initial work with a dataset, to see which flags are being
handled for each data item. If not supplied, this defaults to the value of
<code><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></code><code>("oceDebug")</code>.</p></dd>

</dl></div>
    <div class="section level2">
    <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2>

<ol><li><p>Wong, Annie, Robert Keeley, Thierry Carval, and Argo Data Management Team.
"Argo Quality Control Manual for CTD and Trajectory Data," January 1, 2020.
<code>https://archimer.ifremer.fr/doc/00228/33951/</code>.</p></li>
</ol></div>
    <div class="section level2">
    <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2>
    <div class="dont-index"><p>Other functions relating to data-quality flags:
<code><a href="defaultFlags.html">defaultFlags</a>()</code>,
<code><a href="handleFlags.html">handleFlags</a>()</code>,
<code><a href="handleFlags-adp-method.html">handleFlags,adp-method</a></code>,
<code><a href="handleFlags-ctd-method.html">handleFlags,ctd-method</a></code>,
<code><a href="handleFlags-oce-method.html">handleFlags,oce-method</a></code>,
<code><a href="handleFlags-section-method.html">handleFlags,section-method</a></code>,
<code><a href="initializeFlagScheme.html">initializeFlagScheme</a>()</code>,
<code><a href="initializeFlagScheme-ctd-method.html">initializeFlagScheme,ctd-method</a></code>,
<code><a href="initializeFlagScheme-oce-method.html">initializeFlagScheme,oce-method</a></code>,
<code><a href="initializeFlagScheme-section-method.html">initializeFlagScheme,section-method</a></code>,
<code><a href="initializeFlagSchemeInternal.html">initializeFlagSchemeInternal</a>()</code>,
<code><a href="initializeFlags.html">initializeFlags</a>()</code>,
<code><a href="initializeFlags-adp-method.html">initializeFlags,adp-method</a></code>,
<code><a href="initializeFlags-oce-method.html">initializeFlags,oce-method</a></code>,
<code><a href="initializeFlagsInternal.html">initializeFlagsInternal</a>()</code>,
<code><a href="setFlags.html">setFlags</a>()</code>,
<code><a href="setFlags-adp-method.html">setFlags,adp-method</a></code>,
<code><a href="setFlags-ctd-method.html">setFlags,ctd-method</a></code>,
<code><a href="setFlags-oce-method.html">setFlags,oce-method</a></code></p>
<p>Other things related to argo data:
<code><a href="sub-sub-argo-method.html">[[,argo-method</a></code>,
<code>[[&lt;-,argo-method</code>,
<code><a href="argo.html">argo</a></code>,
<code><a href="argo-class.html">argo-class</a></code>,
<code><a href="argoGrid.html">argoGrid</a>()</code>,
<code><a href="argoNames2oceNames.html">argoNames2oceNames</a>()</code>,
<code><a href="as.argo.html">as.argo</a>()</code>,
<code><a href="plot-argo-method.html">plot,argo-method</a></code>,
<code><a href="read.argo.html">read.argo</a>()</code>,
<code><a href="read.argo.copernicus.html">read.argo.copernicus</a>()</code>,
<code><a href="subset-argo-method.html">subset,argo-method</a></code>,
<code><a href="summary-argo-method.html">summary,argo-method</a></code></p></div>
    </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="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">argo</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">argoNew</span> <span class="op">&lt;-</span> <span class="fu"><a href="handleFlags.html">handleFlags</a></span><span class="op">(</span><span class="va">argo</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="co"># Demonstrate replacement, looking at the second profile</span></span></span>
<span class="r-in"><span><span class="va">f</span> <span class="op">&lt;-</span> <span class="va">argo</span><span class="op">[[</span><span class="st">"salinityFlag"</span><span class="op">]</span><span class="op">]</span><span class="op">[</span>, <span class="fl">2</span><span class="op">]</span></span></span>
<span class="r-in"><span><span class="va">df</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>flag <span class="op">=</span> <span class="va">f</span>, orig <span class="op">=</span> <span class="va">argo</span><span class="op">[[</span><span class="st">"salinity"</span><span class="op">]</span><span class="op">]</span><span class="op">[</span>, <span class="fl">2</span><span class="op">]</span>, new <span class="op">=</span> <span class="va">argoNew</span><span class="op">[[</span><span class="st">"salinity"</span><span class="op">]</span><span class="op">]</span><span class="op">[</span>, <span class="fl">2</span><span class="op">]</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">df</span><span class="op">[</span><span class="fl">11</span><span class="op">:</span><span class="fl">15</span>, <span class="op">]</span> <span class="co"># notice line 13</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>    flag   orig    new</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 11    1 35.207 35.207</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 12    1 35.207 35.207</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 13    4 35.209     NA</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 14    1 35.207 35.207</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 15    1 35.207 35.207</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>

