AMR/docs/reference/like.html

281 lines
18 KiB
HTML

<!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>Vectorised Pattern Matching with Keyboard Shortcut — like • AMR (for R)</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.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/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"><script src="../extra.js"></script><meta property="og:title" content="Vectorised Pattern Matching with Keyboard Shortcut — like"><meta property="og:description" content="Convenient wrapper around grepl() to match a pattern: x %like% pattern. It always returns a logical vector and is always case-insensitive (use x %like_case% pattern for case-sensitive matching). Also, pattern can be as long as x to compare items of each index in both vectors, or they both can have the same length to iterate over all cases."><meta property="og:image" content="https://msberends.github.io/AMR/logo.svg"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:creator" content="@msberends"><meta name="twitter:site" content="@univgroningen"><!-- 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]--></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">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.8.0.9005</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav"><li>
<a href="../index.html">
<span class="fa fa-home"></span>
Home
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
<span class="fa fa-question-circle"></span>
How to
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu"><li>
<a href="../articles/AMR.html">
<span class="fa fa-directions"></span>
Conduct AMR analysis
</a>
</li>
<li>
<a href="../articles/resistance_predict.html">
<span class="fa fa-dice"></span>
Predict antimicrobial resistance
</a>
</li>
<li>
<a href="../articles/datasets.html">
<span class="fa fa-database"></span>
Data sets for download / own use
</a>
</li>
<li>
<a href="../articles/PCA.html">
<span class="fa fa-compress"></span>
Conduct principal component analysis for AMR
</a>
</li>
<li>
<a href="../articles/MDR.html">
<span class="fa fa-skull-crossbones"></span>
Determine multi-drug resistance (MDR)
</a>
</li>
<li>
<a href="../articles/WHONET.html">
<span class="fa fa-globe-americas"></span>
Work with WHONET data
</a>
</li>
<li>
<a href="../articles/SPSS.html">
<span class="fa fa-file-upload"></span>
Import data from SPSS/SAS/Stata
</a>
</li>
<li>
<a href="../articles/EUCAST.html">
<span class="fa fa-exchange-alt"></span>
Apply EUCAST rules
</a>
</li>
<li>
<a href="../reference/mo_property.html">
<span class="fa fa-bug"></span>
Get properties of a microorganism
</a>
</li>
<li>
<a href="../reference/ab_property.html">
<span class="fa fa-capsules"></span>
Get properties of an antibiotic
</a>
</li>
<li>
<a href="../articles/benchmarks.html">
<span class="fa fa-shipping-fast"></span>
Other: benchmarks
</a>
</li>
</ul></li>
<li>
<a href="../reference/index.html">
<span class="fa fa-book-open"></span>
Manual
</a>
</li>
<li>
<a href="../authors.html">
<span class="fa fa-users"></span>
Authors
</a>
</li>
<li>
<a href="../news/index.html">
<span class="far fa-newspaper"></span>
Changelog
</a>
</li>
</ul><ul class="nav navbar-nav navbar-right"><li>
<a href="https://github.com/msberends/AMR" class="external-link">
<span class="fab fa-github"></span>
Source Code
</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>Vectorised Pattern Matching with Keyboard Shortcut</h1>
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/HEAD/R/like.R" class="external-link"><code>R/like.R</code></a></small>
<div class="hidden name"><code>like.Rd</code></div>
</div>
<div class="ref-description">
<p>Convenient wrapper around <code><a href="https://rdrr.io/r/base/grep.html" class="external-link">grepl()</a></code> to match a pattern: <code>x %like% pattern</code>. It always returns a <code><a href="https://rdrr.io/r/base/logical.html" class="external-link">logical</a></code> vector and is always case-insensitive (use <code>x %like_case% pattern</code> for case-sensitive matching). Also, <code>pattern</code> can be as long as <code>x</code> to compare items of each index in both vectors, or they both can have the same length to iterate over all cases.</p>
</div>
<div id="ref-usage">
<div class="sourceCode"><pre class="sourceCode r"><code><span class="fu">like</span><span class="op">(</span><span class="va">x</span>, <span class="va">pattern</span>, ignore.case <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>
<span class="va">x</span> <span class="op">%like%</span> <span class="va">pattern</span>
<span class="va">x</span> <span class="op">%unlike%</span> <span class="va">pattern</span>
<span class="va">x</span> <span class="op">%like_case%</span> <span class="va">pattern</span>
<span class="va">x</span> <span class="op">%unlike_case%</span> <span class="va">pattern</span></code></pre></div>
</div>
<div id="source">
<h2>Source</h2>
<p>Idea from the <a href="https://github.com/Rdatatable/data.table/blob/ec1259af1bf13fc0c96a1d3f9e84d55d8106a9a4/R/like.R" class="external-link"><code>like</code> function from the <code>data.table</code> package</a>, although altered as explained in <em>Details</em>.</p>
</div>
<div id="arguments">
<h2>Arguments</h2>
<dl><dt>x</dt>
<dd><p>a <a href="https://rdrr.io/r/base/character.html" class="external-link">character</a> vector where matches are sought, or an object which can be coerced by <code><a href="https://rdrr.io/r/base/character.html" class="external-link">as.character()</a></code> to a <a href="https://rdrr.io/r/base/character.html" class="external-link">character</a> vector.</p></dd>
<dt>pattern</dt>
<dd><p>a <a href="https://rdrr.io/r/base/character.html" class="external-link">character</a> vector containing regular expressions (or a <a href="https://rdrr.io/r/base/character.html" class="external-link">character</a> string for <code>fixed = TRUE</code>) to be matched in the given <a href="https://rdrr.io/r/base/character.html" class="external-link">character</a> vector. Coerced by <code><a href="https://rdrr.io/r/base/character.html" class="external-link">as.character()</a></code> to a <a href="https://rdrr.io/r/base/character.html" class="external-link">character</a> string if possible.</p></dd>
<dt>ignore.case</dt>
<dd><p>if <code>FALSE</code>, the pattern matching is <em>case sensitive</em> and if <code>TRUE</code>, case is ignored during matching.</p></dd>
</dl></div>
<div id="value">
<h2>Value</h2>
<p>A <a href="https://rdrr.io/r/base/logical.html" class="external-link">logical</a> vector</p>
</div>
<div id="details">
<h2>Details</h2>
<p>These <code>like()</code> and <code>%like%</code>/<code>%unlike%</code> functions:</p><ul><li><p>Are case-insensitive (use <code>%like_case%</code>/<code>%unlike_case%</code> for case-sensitive matching)</p></li>
<li><p>Support multiple patterns</p></li>
<li><p>Check if <code>pattern</code> is a valid regular expression and sets <code>fixed = TRUE</code> if not, to greatly improve speed (vectorised over <code>pattern</code>)</p></li>
<li><p>Always use compatibility with Perl unless <code>fixed = TRUE</code>, to greatly improve speed</p></li>
</ul><p>Using RStudio? The <code>%like%</code>/<code>%unlike%</code> functions can also be directly inserted in your code from the Addins menu and can have its own keyboard shortcut like <code>Shift+Ctrl+L</code> or <code>Shift+Cmd+L</code> (see menu <code>Tools</code> &gt; <code>Modify Keyboard Shortcuts...</code>). If you keep pressing your shortcut, the inserted text will be iterated over <code>%like%</code> -&gt; <code>%unlike%</code> -&gt; <code>%like_case%</code> -&gt; <code>%unlike_case%</code>.</p>
</div>
<div id="stable-lifecycle">
<h2>Stable Lifecycle</h2>
<p><img src="figures/lifecycle_stable.svg" style='margin-bottom:"5"'><br>
The <a href="lifecycle.html">lifecycle</a> of this function is <strong>stable</strong>. In a stable function, major changes are unlikely. This means that the unlying code will generally evolve by adding new arguments; removing arguments or changing the meaning of existing arguments will be avoided.</p>
<p>If the unlying code needs breaking changes, they will occur gradually. For example, an argument will be deprecated and first continue to work, but will emit a message informing you of the change. Next, typically after at least one newly released version on CRAN, the message will be transformed to an error.</p>
</div>
<div id="read-more-on-our-website-">
<h2>Read more on Our Website!</h2>
<p>On our website <a href="https://msberends.github.io/AMR/">https://msberends.github.io/AMR/</a> you can find <a href="https://msberends.github.io/AMR/articles/AMR.html">a comprehensive tutorial</a> about how to conduct AMR data analysis, the <a href="https://msberends.github.io/AMR/reference/">complete documentation of all functions</a> and <a href="https://msberends.github.io/AMR/articles/WHONET.html">an example analysis using WHONET data</a>.</p>
</div>
<div id="see-also">
<h2>See also</h2>
<div class="dont-index"><p><code><a href="https://rdrr.io/r/base/grep.html" class="external-link">grepl()</a></code></p></div>
</div>
<div id="ref-examples">
<h2>Examples</h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span class="va">a</span> <span class="op">&lt;-</span> <span class="st">"This is a test"</span>
<span class="va">b</span> <span class="op">&lt;-</span> <span class="st">"TEST"</span>
<span class="va">a</span> <span class="op">%like%</span> <span class="va">b</span>
<span class="co">#&gt; TRUE</span>
<span class="va">b</span> <span class="op">%like%</span> <span class="va">a</span>
<span class="co">#&gt; FALSE</span>
<span class="co"># also supports multiple patterns</span>
<span class="va">a</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"Test case"</span>, <span class="st">"Something different"</span>, <span class="st">"Yet another thing"</span><span class="op">)</span>
<span class="va">b</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span> <span class="st">"case"</span>, <span class="st">"diff"</span>, <span class="st">"yet"</span><span class="op">)</span>
<span class="va">a</span> <span class="op">%like%</span> <span class="va">b</span>
<span class="co">#&gt; TRUE TRUE TRUE</span>
<span class="va">a</span> <span class="op">%unlike%</span> <span class="va">b</span>
<span class="co">#&gt; FALSE FALSE FALSE</span>
<span class="va">a</span><span class="op">[</span><span class="fl">1</span><span class="op">]</span> <span class="op">%like%</span> <span class="va">b</span>
<span class="co">#&gt; TRUE FALSE FALSE</span>
<span class="va">a</span> <span class="op">%like%</span> <span class="va">b</span><span class="op">[</span><span class="fl">1</span><span class="op">]</span>
<span class="co">#&gt; TRUE FALSE FALSE</span>
<span class="co"># get isolates whose name start with 'Ent' or 'ent'</span>
<span class="va">example_isolates</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/which.html" class="external-link">which</a></span><span class="op">(</span><span class="fu"><a href="mo_property.html">mo_name</a></span><span class="op">(</span><span class="va">example_isolates</span><span class="op">$</span><span class="va">mo</span><span class="op">)</span> <span class="op">%like%</span> <span class="st">"^ent"</span><span class="op">)</span>, <span class="op">]</span>
<span class="co"># \donttest{</span>
<span class="co"># faster way, since mo_name() is context-aware:</span>
<span class="va">example_isolates</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/which.html" class="external-link">which</a></span><span class="op">(</span><span class="fu"><a href="mo_property.html">mo_name</a></span><span class="op">(</span><span class="op">)</span> <span class="op">%like%</span> <span class="st">"^ent"</span><span class="op">)</span>, <span class="op">]</span>
<span class="kw">if</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://dplyr.tidyverse.org" class="external-link">"dplyr"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span>
<span class="va">example_isolates</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span>
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/filter.html" class="external-link">filter</a></span><span class="op">(</span><span class="fu"><a href="mo_property.html">mo_name</a></span><span class="op">(</span><span class="op">)</span> <span class="op">%like%</span> <span class="st">"^ent"</span><span class="op">)</span>
<span class="op">}</span>
<span class="co"># }</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 Matthijs S. Berends, Christian F. Luz, Dennis Souverein,
Erwin E. A. Hassing.</p>
</div>
<div class="pkgdown">
<p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a>
2.0.2.</p>
</div>
</footer></div>
</body></html>