<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>R 数据分析 - 系列 - 灿若星河 | 郝建锋</title><link>https://philohao.com/series/r-%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/</link><description>R 数据分析 - 系列 - 灿若星河 | 郝建锋</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>haojianfeng1997@gmail.com (Jianfeng.Hao)</managingEditor><webMaster>haojianfeng1997@gmail.com (Jianfeng.Hao)</webMaster><lastBuildDate>Tue, 30 Oct 2018 16:20:03 +0800</lastBuildDate><atom:link href="https://philohao.com/series/r-%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/index.xml" rel="self" type="application/rss+xml"/><item><title>stargazer：R 语言输出统计表</title><link>https://philohao.com/2018/10/20181030/</link><pubDate>Tue, 30 Oct 2018 16:20:03 +0800</pubDate><dc:creator>Jianfeng.Hao</dc:creator><author>haojianfeng1997@gmail.com (Jianfeng.Hao)</author><guid isPermaLink="true">https://philohao.com/2018/10/20181030/</guid><description>stargazer 包使用笔记，记录 R 模型结果和统计表的输出方法。</description><content:encoded><![CDATA[<center>
    <i>
    	使用 stargazer 可以将 R 构建的模型结果以 LATEX 、 HTML 和 ASCII 格式输出，方便我们生成标准格式的表格<br />
    	结合 rmarkdown 来进行使用，会使我们优雅地写出一篇拥有期刊级统计表的文章
    </i>
</center>
<h2 id="简介">简介</h2>
<p>R 包 <code>stargazer</code> 可以将 <strong>数据统计汇总</strong> （格式可以为数据框、向量和矩阵等）和 <strong>统计模型结果</strong> 输出为标准统计表格式的 <code>LATEX</code> 、<code>HTML</code> 和 <code>ASCII</code> 格式的字符文本，<em><strong>将其复制到对应的软件中</strong></em> 即可生成标准的统计表，当然也可以配合 <code>rmarkdown</code> 使用直接渲染输出为表格，更加方便直接。</p>
<h2 id="安装及加载">安装及加载</h2>
<p>可以使用常规方法导入 <code>stargazer</code> 包：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">install.packages</span><span class="p">(</span><span class="s">&#34;stargazer&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="n">stargazer</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="note info"><p>
stargazer 包的输出结果是相应格式的，例如输出 LATEX 格式，可以直接将结果粘贴进在线编辑器 [Overleaf](https://www.overleaf.com) 中输出表格。下文直接将结果以对应表格的形式展示。
</p></div>
<hr>
<h2 id="数据统计汇总">数据统计汇总</h2>
<h3 id="统计汇总数据">统计汇总数据</h3>
<p>如果要展示数据集的基本描述性分析数据（由 R 函数 <code>summary</code> 得到），可以使用以下命令直接得到：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">attitude</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/qCOW9qcQ.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/qCOW9qcQ.png, https://static.datartisan.com/upload/attachment/2016/12/qCOW9qcQ.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/qCOW9qcQ.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/qCOW9qcQ.png"
        title="统计汇总数据"
    /></p>
<h3 id="原始数据展示">原始数据展示</h3>
<p>如果想输出某些数据框的特定行的原始内容，需要指定要查看的数据框的一部分，并将设置参数 <code>summary = FALSE</code>, 如下所示：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">data</span><span class="p">(</span><span class="s">&#34;attitude&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">attitude[1</span><span class="o">:</span><span class="m">4</span><span class="p">,</span><span class="n">]</span><span class="p">,</span> <span class="n">summary</span> <span class="o">=</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="n">rownames</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/O5nnDnBH.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/O5nnDnBH.png, https://static.datartisan.com/upload/attachment/2016/12/O5nnDnBH.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/O5nnDnBH.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/O5nnDnBH.png"
        title="展示数据集"
    /></p>
<p>可以看到，<code>attitude</code> 数据集中包括 <code>rating</code>、<code>complaints</code> 等多个变量，数据展示形式为 <strong>三线表</strong> 。</p>
<h3 id="列联表">列联表</h3>
<p><code>stargazer </code> 也可以用来展示向量、矩阵或者数据框的内容。在这里我们建立了 <code>attitude</code> 数据集中变量 <code>rating</code>、<code>complaints</code>、<code>privileges</code> 的相关系数矩阵，并予以展示：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="n">correlation.matrix</span> <span class="o">&lt;-</span> <span class="nf">cor</span><span class="p">(</span><span class="n">attitude[</span><span class="p">,</span><span class="nf">c</span><span class="p">(</span><span class="s">&#34;rating&#34;</span><span class="p">,</span> <span class="s">&#34;complaints&#34;</span><span class="p">,</span> <span class="s">&#34;privileges&#34;</span><span class="p">)</span><span class="n">]</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">correlation.matrix</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#34;Correlation Matrix&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/cC2cR66K.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/cC2cR66K.png, https://static.datartisan.com/upload/attachment/2016/12/cC2cR66K.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/cC2cR66K.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/cC2cR66K.png"
        title="矩阵展示"
    /></p>
<hr>
<h2 id="统计模型结果">统计模型结果</h2>
<h3 id="回归表">回归表</h3>
<p>在 R 中可以很方便的使用 <code>lm()</code> 和 <code>glm()</code> 函数来构建回归模型，我们同样可以在同一张表中对这些模型进行比较，参数 <code>title</code> 用来设定表的标题，参数 <code>align</code> 使每列中的系数沿小数点对齐：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="c1">## 构建两个线性回归模型</span>
</span></span><span class="line"><span class="cl"><span class="n">linear.1</span> <span class="o">&lt;-</span> <span class="nf">lm</span><span class="p">(</span><span class="n">rating</span> <span class="o">~</span> <span class="n">complaints</span> <span class="o">+</span> <span class="n">privileges</span> <span class="o">+</span> <span class="n">learning</span> <span class="o">+</span> <span class="n">raises</span> <span class="o">+</span> <span class="n">critical</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="o">=</span> <span class="n">attitude</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">linear.2</span> <span class="o">&lt;-</span> <span class="nf">lm</span><span class="p">(</span><span class="n">rating</span> <span class="o">~</span> <span class="n">complaints</span> <span class="o">+</span> <span class="n">privileges</span> <span class="o">+</span> <span class="n">learning</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">attitude</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1">## 构建一个 probit 模型</span>
</span></span><span class="line"><span class="cl"><span class="n">attitude</span><span class="o">$</span><span class="n">high.rating</span> <span class="o">&lt;-</span> <span class="p">(</span><span class="n">attitude</span><span class="o">$</span><span class="n">rating</span> <span class="o">&gt;</span> <span class="m">70</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">probit.model</span> <span class="o">&lt;-</span> <span class="nf">glm</span><span class="p">(</span><span class="n">high.rating</span> <span class="o">~</span> <span class="n">learning</span> <span class="o">+</span> <span class="n">critical</span> <span class="o">+</span> <span class="n">advance</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">attitude</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="n">family</span> <span class="o">=</span> <span class="nf">binomial</span><span class="p">(</span><span class="n">link</span> <span class="o">=</span> <span class="s">&#34;probit&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">linear.2</span><span class="p">,</span> <span class="n">probit.model</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#34;Results&#34;</span><span class="p">,</span> <span class="n">align</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/Cyqs7adZ.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/Cyqs7adZ.png, https://static.datartisan.com/upload/attachment/2016/12/Cyqs7adZ.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/Cyqs7adZ.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/Cyqs7adZ.png"
        title="回归表"
    /></p>
<h4 id="回归表的修饰">回归表的修饰</h4>
<p>为了使表格更加标准，我们还可以通过调整参数进行以下操作：</p>
<ul>
<li>删除表中的空白行：<code>no.space</code></li>
<li>移除不关心的统计量：<code>omit.stat</code></li>
<li>修改因变量和自变量的名称：<code>dep.var.labels</code> 、 <code>covariate.labels</code></li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">linear.2</span><span class="p">,</span> <span class="n">probit.model</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#34;Regression Results&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="n">align</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">dep.var.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Overall Rating&#34;</span><span class="p">,</span><span class="s">&#34;High Rating&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">covariate.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Handling of Complaints&#34;</span><span class="p">,</span> <span class="s">&#34;No Special Privileges&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="s">&#34;Opportunity to Learn&#34;</span><span class="p">,</span> <span class="s">&#34;Performance-Based Raises&#34;</span><span class="p">,</span> <span class="s">&#34;Too Critical&#34;</span><span class="p">,</span><span class="s">&#34;Advancement&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">omit.stat</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;LL&#34;</span><span class="p">,</span> <span class="s">&#34;ser&#34;</span><span class="p">,</span> <span class="s">&#34;f&#34;</span><span class="p">),</span> <span class="n">no.space</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/xHMLhXyR.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/xHMLhXyR.png, https://static.datartisan.com/upload/attachment/2016/12/xHMLhXyR.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/xHMLhXyR.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/xHMLhXyR.png"
        title="回归表的修饰"
    /></p>
<p>本例中对原表格做了以下修改：</p>
<blockquote>
<ol>
<li>
<p>使用 <code>dep.var.labels</code> 和 <code>covariate.lables</code> 参数分别将因变量和自变量重命名为容易理解的形式；</p>
</li>
<li>
<p>使用 <code>omit.stat</code> 参数移除对数似然比（<code>&quot;LL&quot;</code>）、标准化残差（<code>&quot;ser&quot;</code>）和 F 统计量（<code>&quot;f&quot;</code>）；</p>
</li>
<li>
<p>使用<code>no.space</code>参数将输出表格中的空行删去。</p>
</li>
</ol>
</blockquote>
<h4 id="展示置信区间">展示置信区间</h4>
<ul>
<li>设置是否展示置信区间：<code>ci</code></li>
<li>设置置信区间的置信度：<code>ci.level</code></li>
<li>使回归系数与置信区间并排展示：<code>single.row</code></li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">linear.2</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#34;Regression Results&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="n">dep.var.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Overall Rating&#34;</span><span class="p">,</span> <span class="s">&#34;High Rating&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">covariate.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Handling of Complaints&#34;</span><span class="p">,</span> <span class="s">&#34;No Special Privileges&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="s">&#34;Opportunity to Learn&#34;</span><span class="p">,</span> <span class="s">&#34;Performance-Based Raises&#34;</span><span class="p">,</span> <span class="s">&#34;Too Critical&#34;</span><span class="p">,</span> <span class="s">&#34;Advancement&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">omit.stat</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;LL&#34;</span><span class="p">,</span><span class="s">&#34;ser&#34;</span><span class="p">,</span><span class="s">&#34;f&#34;</span><span class="p">),</span> <span class="n">ci</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">ci.level</span> <span class="o">=</span> <span class="m">0.90</span><span class="p">,</span> <span class="n">single.row</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/rUe11IM4.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/rUe11IM4.png, https://static.datartisan.com/upload/attachment/2016/12/rUe11IM4.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/rUe11IM4.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/rUe11IM4.png"
        title="展示置信区间"
    /></p>
<h4 id="其他修饰功能">其他修饰功能</h4>
<blockquote>
<p>控制自变量展示的顺序：<code>order</code>
控制要展示的统计量：<code>keep.stat</code> , <code>keep.stat = &quot;n&quot;</code> 即只展示样本量的大小，并移除其他统计量</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">linear.2</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#34;Regression Results&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="n">dep.var.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Overall Rating&#34;</span><span class="p">,</span> <span class="s">&#34;High Rating&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">order</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;learning&#34;</span><span class="p">,</span> <span class="s">&#34;privileges&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">keep.stat</span> <span class="o">=</span> <span class="s">&#34;n&#34;</span><span class="p">,</span> <span class="n">ci</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">ci.level</span> <span class="o">=</span> <span class="m">0.90</span><span class="p">,</span> <span class="n">single.row</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/u0K7suc0.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/u0K7suc0.png, https://static.datartisan.com/upload/attachment/2016/12/u0K7suc0.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/u0K7suc0.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/u0K7suc0.png"
        title="其他修饰功能"
    /></p>
<h4 id="控制输出格式">控制输出格式</h4>
<p>可以使用 <code>type</code> 参数控制以 <code>ASCII</code> 、<code>text</code>、<code>html</code>、<code>latex</code> 格式输出，默认为<code>LATEX</code> 格式。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">linear.2</span><span class="p">,</span> <span class="n">type</span> <span class="o">=</span> <span class="s">&#34;text&#34;</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#34;Regression Results&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="n">dep.var.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Overall Rating&#34;</span><span class="p">,</span> <span class="s">&#34;High Rating&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">order</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;learning&#34;</span><span class="p">,</span> <span class="s">&#34;privileges&#34;</span><span class="p">),</span> 
</span></span><span class="line"><span class="cl"><span class="n">keep.stat</span> <span class="o">=</span> <span class="s">&#34;n&#34;</span><span class="p">,</span> <span class="n">ci</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">ci.level</span> <span class="o">=</span> <span class="m">0.90</span><span class="p">,</span> <span class="n">single.row</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">header</span> <span class="o">=</span> <span class="bp">F</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/gOA9wyCN.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/gOA9wyCN.png, https://static.datartisan.com/upload/attachment/2016/12/gOA9wyCN.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/gOA9wyCN.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/gOA9wyCN.png"
        title="控制输出格式"
    /></p>
<h4 id="自定义统计量">自定义统计量</h4>
<p>我们使用 <code>sandwich</code> 包来计算异方差-稳健标准误，并将其与默认计算的标准差一同展示。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="n">sandwich</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">cov</span> <span class="o">&lt;-</span> <span class="nf">vcovHC</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">type</span> <span class="o">=</span> <span class="s">&#34;HC&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">robust.se</span> <span class="o">&lt;-</span> <span class="nf">sqrt</span><span class="p">(</span><span class="nf">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nf">stargazer</span><span class="p">(</span><span class="n">linear.1</span><span class="p">,</span> <span class="n">linear.1</span><span class="p">,</span> <span class="n">se</span> <span class="o">=</span> <span class="nf">list</span><span class="p">(</span><span class="kc">NULL</span><span class="p">,</span> <span class="n">robust.se</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="n">column.labels</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;default&#34;</span><span class="p">,</span> <span class="s">&#34;robust&#34;</span><span class="p">))</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://static.datartisan.com/upload/attachment/2016/12/PC8L8NoB.png"
        data-srcset="https://static.datartisan.com/upload/attachment/2016/12/PC8L8NoB.png, https://static.datartisan.com/upload/attachment/2016/12/PC8L8NoB.png 1.5x, https://static.datartisan.com/upload/attachment/2016/12/PC8L8NoB.png 2x"
        data-sizes="auto"
        alt="https://static.datartisan.com/upload/attachment/2016/12/PC8L8NoB.png"
        title="自定义统计量"
    /></p>
<h3 id="支持的模型">支持的模型</h3>
<p>目前 <code>stargazer</code> 支持以下模型结果的展示：</p>
<blockquote>
<p>aftreg (eha), arima (stats), betareg (betareg), binaryChoice (sampleSelection), bj (rms), brglm (brglm), censReg (censReg), coeftest (lmtest), coxph (survival), coxreg (eha), clm (ordinal), clogit (survival), cph (rms), dynlm (dynlm), ergm(ergm), errorsarlm (spdev), felm (lfe), gam (mgcv), garchFit (fGarch), gee (gee), glm (stats), Glm (rms), glmer (lme4), glmrob(robustbase), gls (nlme), Gls (rms), gmm (gmm), heckit (sampleSelection), hetglm (glmx), hurdle (pscl), ivreg (AER), lagarlm (spdep), lm(stats), lme (nlme), lmer (lme4), lmrob (robustbase), lrm (rms), maBina (erer), mclogit (mclogit), mlogit (mlogit), mnlogit (mnlogit), mlreg (eha), multinom (nnet), nlme (nlme), nlmer (lme4), ols (rms), pgmm(plm), phreg (eha), plm (plm), pmg (plm), polr (MASS), psm (rms), rem.dyad (relevent), rlm(MASS), rq (quantreg), Rq (rms), selection (sampleSelection), svyglm (survey), survreg (survival), tobit (AER), weibreg (eha), zeroinfl (pscl), as well as from the implementation of these in zelig. In addition, stargazer also supports the following zelig models: “relogit”, “cloglog.net”, “gamma.net”, “probit.net” and “logit.net”.</p>
</blockquote>
<h3 id="支持的模板">支持的模板</h3>
<p><code>style</code> 参数可以用来选择统计表的展现形式，你可以通过  <code>?stargazer</code> 查看具体参数的设置来获取具体支持的格式，目前支持的期刊统计图格式有 <code>American Economic Review</code>、 <code>Quarterly Journal of Economics</code>  等。</p>
<h2 id="结合-rmarkdown-使用">结合 rmarkdown 使用</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="n">```{r, results=&#39;asis&#39;}
</span></span></span><span class="line"><span class="cl"><span class="n">stargazer(model, header = F)
</span></span></span><span class="line"><span class="cl"><span class="n">```</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>注意事项：</strong></p>
<ul>
<li>要加上 <code>results='asis'</code> 保证输出的是表格，而不是 LATEX 文本；</li>
<li>参数 <code>align</code> 失效，不能使用；</li>
<li>加上参数 <code>header=FALSE</code>，避免输出关于包作者的一些文本信息。</li>
</ul>
</blockquote>
<h2 id="致谢">致谢</h2>
<blockquote>
<h3 id="参考文章">参考文章</h3>
<ul>
<li><a href="https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf" target="_blank" rel="noopener noreffer">stargazer.pdf</a></li>
<li>Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics
Tables. R package version 5.2.2. <a href="https://CRAN.R-project.org/package=stargazer" target="_blank" rel="noopener noreffer">https://CRAN.R-project.org/package=stargazer</a></li>
</ul>
</blockquote>]]></content:encoded></item><item><title>R Markdown: 数据报告生成利器</title><link>https://philohao.com/2018/07/20180709/</link><pubDate>Mon, 09 Jul 2018 22:44:09 +0800</pubDate><dc:creator>Jianfeng.Hao</dc:creator><author>haojianfeng1997@gmail.com (Jianfeng.Hao)</author><guid isPermaLink="true">https://philohao.com/2018/07/20180709/</guid><description>R Markdown 使用笔记，介绍通过 knitr 与 Pandoc 生成数据报告的基础流程。</description><content:encoded><![CDATA[<center>
    <i>   
        R Markdown 站在 knitr 和 Pandoc 的肩膀上，前者执行嵌入于文档中的计算机代码，并将 R Markdown 转换为 Markdown；后者将 Markdown 呈现出您想要的输出格式（如 PDF、HTML、Word 等）
    </i>
</center>
<p>此篇文章翻译自谢益辉新书 <a href="https://bookdown.org/yihui/rmarkdown/" target="_blank" rel="noopener noreffer">《R Markdown: The Definitive Guide》</a> 的前三章节，内容有所删减，主要介绍了 R Markdown 的相关结构及语法规则，如果想了解更多更详细的内容推荐您阅读原书。</p>
<h1 id="安装">安装</h1>
<p>这里假设您已经安装了 R (<a href="https://www.r-project.org/" target="_blank" rel="noopener noreffer">https://www.r-project.org</a>)  和 RStudio IDE (<a href="https://www.rstudio.com/" target="_blank" rel="noopener noreffer">https://www.rstudio.com</a>) 。Rstudio 并不是必须的，但安装它会使您更加容易地使用 R Markdown。如果您没有安装 RStudio IDE，您将不得不安装 Pandoc（ <a href="https://pandoc.org" target="_blank" rel="noopener noreffer">https://pandoc.org</a> ），否则就不需要单独安装 Pandoc，因为在安装 RStudio 时已经将它捆绑安装了。接下来，您可以在 R 中安装 <code>rmarkdown</code> 包：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="c1"># Install from CRAN</span>
</span></span><span class="line"><span class="cl"><span class="nf">install.packages</span><span class="p">(</span><span class="s">&#39;rmarkdown&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Or if you want to test the development version,</span>
</span></span><span class="line"><span class="cl"><span class="c1"># install from GitHub</span>
</span></span><span class="line"><span class="cl"><span class="kr">if</span> <span class="p">(</span><span class="o">!</span><span class="nf">requireNamespace</span><span class="p">(</span><span class="s">&#34;devtools&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">  <span class="nf">install.packages</span><span class="p">(</span><span class="s">&#39;devtools&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">devtools</span><span class="o">::</span><span class="nf">install_github</span><span class="p">(</span><span class="s">&#39;rstudio/rmarkdown&#39;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>如果您想要生成 PDF 类型文档输出，您将需要安装 LaTeX 。对于那些以前没有安装过 LaTeX 的 R Markdown 用户，我们建议您安装 TinyTeX（https://yihui./tinytex/）：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">install.packages</span><span class="p">(</span><span class="s">&#34;tinytex&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">tinytex</span><span class="o">::</span><span class="nf">install_tinytex</span><span class="p">()</span>  <span class="c1"># install TinyTeX</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>TinyTeX 相当于一款轻量级、跨平台、易于维护的 LaTeX 。在将 LaTeX  或 R Markdown 文档编译成 PDF 时，<code>tinytex</code> 可以帮助您自动安装所需的相关 R 包，同时还能确保一个 LaTeX  文档被编译成正确的次数，以解决所有的交叉引用问题。如果您不明白这两件事是什么意思，应该按照我们的建议来安装 TinyTeX，因为这些细节往往并不值得您花费时间和精力去关心。</p>
<p>使用 <code>rmarkdown</code> 包、RStudio/Pandoc 和 LaTeX，您应该能够编译大多数R Markdown 文档。在某些情况下，您可能需要其他软件包，我们将在必要时提到它们。</p>
<blockquote>
<p><strong>参考文献</strong></p>
<ul>
<li>R Core Team. 2018. <em>R: A Language and Environment for Statistical Computing</em>. Vienna, Austria: R Foundation for Statistical Computing. <a href="https://www.r-project.org/" target="_blank" rel="noopener noreffer">https://www.R-project.org/</a>.</li>
<li>Xie, Yihui. 2018f. <em>Tinytex: Helper Functions to Install and Maintain Tex Live, and Compile Latex Documents</em>. <a href="https://github.com/yihui/tinytex" target="_blank" rel="noopener noreffer">https://github.com/yihui/tinytex</a>.</li>
</ul>
</blockquote>
<hr>
<h1 id="基础知识">基础知识</h1>
<p>R Markdown 为数据科学提供了一个创作框架。R Markdown 能胜任以下两个任务：</p>
<ul>
<li>保存并执行代码；</li>
<li>生成可共享的高质量报告。</li>
</ul>
<p>R Markdown 的设计初衷是为了更容易地实现报告内容的可重复性，这是因为计算代码和叙述都在同一个文档中，结果是由源代码自动生成的。并且 R Markdown 支持数十种静态和动态/交互式输出格式。</p>
<p>如果您更喜欢观看视频进行学习，我们建议您查看网站 <a href="https://rmarkdown.rstudio.com" target="_blank" rel="noopener noreffer">https://rmarkdown.rstudio.com</a>，并在 “Get Started ” 中观看视频，其中包括了 R Markdown 的基础知识。</p>
<h2 id="文档结构">文档结构</h2>
<p>下面是一份非常简易的 R Markdown 文档，是一个带有 <code>.Rmd</code> 拓展名的纯文本文档。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Hello R Markdown&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Awesome Me&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;2018-02-14&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="l">html_document</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl">This is a paragraph in an R Markdown document.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Below is a code chunk:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">```{r}
</span></span><span class="line"><span class="cl">fit = lm(dist ~ speed, data = cars)
</span></span><span class="line"><span class="cl">b   = coef(fit)
</span></span><span class="line"><span class="cl">plot(cars)
</span></span><span class="line"><span class="cl">abline(fit)
</span></span><span class="line"><span class="cl"><span class="s">```
</span></span></span><span class="line"><span class="cl"><span class="s"></span>
</span></span><span class="line"><span class="cl">The slope of the regression is `r b[1]`.
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>您可以使用任何文本编辑器（包括但不限于 RStudio）来创建这样的文本文档。如果使用 RStudio，您可以从 <code>File -&gt; New File -&gt; R Markdown </code> 中创建一个新的 Rmd 文档。</p>
<p>一份 R Markdown 文档有三个基础组成部分：元数据，文本和代码。元数据是在三个连接符 <code>---</code> 之间的内容。元数据的语法是 YAML（ <a href="https://en.wikipedia.org/wiki/YAML" target="_blank" rel="noopener noreffer">YAML 不是标记语言</a> ），所以有时它也被称为 YAML metadata 或 YAML frontmatter。 需要注意的是，缩进在 YAML 中十分重要，忽视它会让你付出惨重代价。请参阅谢益辉所写的 《bookdown》（2016）一书中的 <a href="https://bookdown.org/yihui/bookdown/r-markdown.html" target="_blank" rel="noopener noreffer">附录b.2</a> 来了解一些简单的例子，这些示例展示了 YAML 语法。</p>
<p>文档的主体遵循元数据书写的规则。文本的语法是 Markdown，将在第 2.5 节中进行介绍。有两种类型的计算机代码，在第 2.6 节中进行了详细解释：</p>
<ul>
<li><strong>代码块</strong>：以三个重音符及所使用语言开始，其中 <code>r</code> 代表所使用的程序语言，并以三个重音符结束。 可以在花括号中填写块选项（如：将图形高度设置为5英寸：<code>{r, fig.height=5}</code>）。</li>
<li><strong>内联代码</strong>：以 ``r` 开始，并以单个重音符结束。</li>
</ul>
<h2 id="文档编译">文档编译</h2>
<p>最简单的方式莫过于在 RStudio 中单击 <code>Knit</code> 按钮，对应的快捷键为 <code>Ctrl + Shift + K</code> （在 macOS 中为 <code>Cmd + Shift + K</code>）。当然也可以直接运行代码 <code>rmarkdown::render</code> 来进行渲染编译，如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="n">rmarkdown</span><span class="o">::</span><span class="nf">render</span><span class="p">(</span><span class="s">&#39;foo.Rmd&#39;</span><span class="p">,</span> <span class="s">&#39;pdf_document&#39;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>当编译多个文档时，使用函数更加方便，因为可以直接使用循环来进行渲染编译。</p>
<h2 id="参考卡片">参考卡片</h2>
<p>RStudio 已经创建了大量的参考卡片，它们可以在 <a href="https://www.rstudio.com/resources/cheatsheets/" target="_blank" rel="noopener noreffer">https://www.rstudio.com/resources/cheatsheets/</a> 上免费获得。</p>
<h2 id="输出格式">输出格式</h2>
<p>有两种输出格式：documents 和 presentations 。所有可用的格式如下所示 ：</p>
<ul>
<li><code>beamer_presentation</code></li>
<li><code>github_document</code></li>
<li><code>html_document</code></li>
<li><code>ioslides_presentation</code></li>
<li><code>latex_document</code></li>
<li><code>md_document</code></li>
<li><code>odt_document</code></li>
<li><code>pdf_document</code></li>
<li><code>powerpoint_presentation</code></li>
<li><code>rtf_document</code></li>
<li><code>slidy_presentation</code></li>
<li><code>word_document</code></li>
</ul>
<p>我们将在第 3 章和第 4 章详细地记录这些输出格式。在其他扩展包中提供了更多的输出格式（从第 5 章开始）。对于 Rmd 文件的 YAML 元数据中的输出格式名称，如果格式来自扩展包，您需要包含包名（若格式来自于 <code>rmarkdown</code> 包，则不需要 <code>rmarkdown::</code>前缀 ），例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="l">tufte::tufte_html</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>每种输出格式通常都有多种格式选项。所有这些选项都记录在 R 包 help 页面上。例如，您可以在 R 中键入 <code>?rmarkdown::</code> 打开关于 <code>html_document</code> 格式的 help 页面。当您想要使用某些选项时，必须将这些值从 R 转换成 YAML，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">html_document</span><span class="p">(</span><span class="n">toc</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">toc_depth</span> <span class="o">=</span> <span class="m">2</span><span class="p">,</span> <span class="n">dev</span> <span class="o">=</span> <span class="s">&#39;svg&#39;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>可以用 YAML 写为：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc_depth</span><span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">dev</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;svg&#39;</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>YAML 中的字符串通常不需要引号（``dev：“svg”<code>和</code>dev:svg<code>是相同的），除非它们包含特殊字符，比如冒号</code>：<code>。如果您不确定是否应该引用字符串，那么用 </code>yaml` 包来测试它，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="nf">cat</span><span class="p">(</span><span class="n">yaml</span><span class="o">::</span><span class="nf">as.yaml</span><span class="p">(</span><span class="nf">list</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">  <span class="n">title</span> <span class="o">=</span> <span class="s">&#39;A Wonderful Day&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="n">subtitle</span> <span class="o">=</span> <span class="s">&#39;hygge: a quality of coziness&#39;</span>
</span></span><span class="line"><span class="cl"><span class="p">)))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## title: A Wonderful Day</span>
</span></span><span class="line"><span class="cl"><span class="c1">## subtitle: &#39;hygge: a quality of coziness&#39;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>注意，上面例子中的副标题是由于冒号而引用单引号的。</p>
<p>如果某一选项有子选项（这意味着该选项的值是 R 中的列表），则子选项需要进一步缩进，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">includes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">in_header</span><span class="p">:</span><span class="w"> </span><span class="l">header.html</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">before_body</span><span class="p">:</span><span class="w"> </span><span class="l">before.html</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>一些选项将被传递给 <strong>knitr</strong> ，比如 <code>dev</code>、<code>fig_width</code> 和 <code>fig_height</code>。这些选项的详细文档可以在 <a href="https://yihui.name/knitr/options/" target="_blank" rel="noopener noreffer">knitr 文档页面</a> 上找到。请注意，实际的 knitr 选项名称可能有所不同。特别是，knitr 在名称中使用 <code>.</code>，但 rmarkdown 使用 <code>_</code>，例如，在 rmarkdown 中，<code>fig_width</code>  对应于knitr 中的 <code>fig.width</code> 。</p>
<p>一些选项将被传递给 <strong>Pandoc</strong>，比如 <code>toc</code>、<code>toc_depth</code> 和 <code>number_sections</code> 。当有疑问时，您应该参考 Pandoc 文档。R Markdown 输出格式函数通常有一个<code>pandoc_args</code>  参数，它应该是传递给 Pandoc 的参数的字符向量。如果您发现任何没有由输出格式参数表示的 Pandoc 特性，您可以使用这个终极论证，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">pdf_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pandoc_args</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;--wrap=none&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;--top-level-division=chapter&#34;</span><span class="p">]</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h2 id="markdown-语法">Markdown 语法</h2>
<h3 id="内联格式">内联格式</h3>
<ul>
<li>
<p><em>斜体</em> ：<code>_text_</code> 或 <code>*text*</code></p>
</li>
<li>
<p><strong>粗体</strong> ：<code>**text** </code></p>
</li>
<li>
<p>下标 ：<code>H~3~PO~4~</code>  渲染为 $H_3PO_4$</p>
</li>
<li>
<p>上标 ：<code>Cu^2+^</code>  渲染为 $Cu^{2+}$</p>
</li>
<li>
<p>脚注 ： <code>^[This is a footnote.]</code></p>
</li>
<li>
<p>内联代码 ：<code>`code`</code> , 可以使用 n+1 个重音符输出包含 n 个重音符的代码块。</p>
</li>
<li>
<p>超链接 ：<code>[text](link) </code></p>
</li>
<li>
<p>图片链接 ： <code>![alt text or image title](path/to/image)</code></p>
</li>
<li>
<p>引用 ：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-ruby" data-lang="ruby"><span class="line"><span class="cl"><span class="vi">@Manual</span><span class="p">{</span><span class="n">R</span><span class="o">-</span><span class="n">base</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="n">title</span> <span class="o">=</span> <span class="p">{</span><span class="ss">R</span><span class="p">:</span> <span class="n">A</span> <span class="no">Language</span> <span class="ow">and</span> <span class="no">Environment</span> <span class="k">for</span> <span class="no">Statistical</span>
</span></span><span class="line"><span class="cl">    <span class="no">Computing</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="n">author</span> <span class="o">=</span> <span class="p">{{</span><span class="n">R</span> <span class="no">Core</span> <span class="no">Team</span><span class="p">}},</span>
</span></span><span class="line"><span class="cl">  <span class="n">organization</span> <span class="o">=</span> <span class="p">{</span><span class="n">R</span> <span class="no">Foundation</span> <span class="k">for</span> <span class="no">Statistical</span> <span class="no">Computing</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="n">address</span> <span class="o">=</span> <span class="p">{</span><span class="no">Vienna</span><span class="p">,</span> <span class="no">Austria</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="n">year</span> <span class="o">=</span> <span class="p">{</span><span class="mi">2017</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="n">url</span> <span class="o">=</span> <span class="p">{</span><span class="ss">https</span><span class="p">:</span><span class="sr">//</span><span class="n">www</span><span class="o">.</span><span class="n">R</span><span class="o">-</span><span class="n">project</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="p">},</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
<h3 id="块级元素">块级元素</h3>
<ul>
<li>
<p><strong>标题</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-Markdown" data-lang="Markdown"><span class="line"><span class="cl"><span class="gh"># First-level header
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl"><span class="gu">## Second-level header
</span></span></span><span class="line"><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="cl"><span class="gu">### Third-level header
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>如果不想让某个标题被编号，可以在标题后面添加 <code>{-}</code> 或者 <code>{.unnumbered}</code>，如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-Markdown" data-lang="Markdown"><span class="line"><span class="cl"><span class="gh"># Preface {-} 
</span></span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p><strong>无序列表</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-Markdown" data-lang="Markdown"><span class="line"><span class="cl"><span class="k">-</span> one item
</span></span><span class="line"><span class="cl"><span class="k">-</span> one item
</span></span><span class="line"><span class="cl"><span class="k">-</span> one item
</span></span><span class="line"><span class="cl">  <span class="k">-</span> one more item
</span></span><span class="line"><span class="cl">  <span class="k">-</span> one more item
</span></span><span class="line"><span class="cl">  <span class="k">-</span> one more item
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p><strong>有序列表</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-Markdown" data-lang="Markdown"><span class="line"><span class="cl"><span class="k">1.</span> the first item
</span></span><span class="line"><span class="cl"><span class="k">2.</span> the second item
</span></span><span class="line"><span class="cl"><span class="k">3.</span> the third item
</span></span><span class="line"><span class="cl">  <span class="k">-</span> one unordered item
</span></span><span class="line"><span class="cl">  <span class="k">-</span> one unordered item
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p><strong>引用</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-Markdown" data-lang="Markdown"><span class="line"><span class="cl"><span class="k">&gt; </span><span class="ge">&#34;I thoroughly disapprove of duels. If a man should challenge me,
</span></span></span><span class="line"><span class="cl"><span class="ge"></span>  I would take him kindly and forgivingly by the hand and lead him
</span></span><span class="line"><span class="cl">  to a quiet place and kill him.&#34;
</span></span><span class="line"><span class="cl"><span class="k">&gt;
</span></span></span><span class="line"><span class="cl"><span class="k"></span><span class="ge">&gt;                                                 --- Mark Twain
</span></span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>&ldquo;I thoroughly disapprove of duels. If a man should challenge me,
I would take him kindly and forgivingly by the hand and lead him
to a quiet place and kill him.&rdquo;</p>
<p>​                                               &mdash; Mark Twain</p>
</blockquote>
</li>
<li>
<p><strong>代码块</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-Markdown" data-lang="Markdown"><span class="line"><span class="cl"><span class="s">```
</span></span></span><span class="line"><span class="cl"><span class="s"></span>This text is displayed verbatim / preformatted
</span></span><span class="line"><span class="cl"><span class="s">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Or indent by four spaces:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    This text is displayed verbatim / preformatted
</span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
<h3 id="数学表达式">数学表达式</h3>
<p><code>$f(k) = {n \choose k} p^{k} (1-p)^{n-k}$ </code> :  $f(k) = {n \choose k} p^{k} (1-p)^{n-k}$</p>
<p><code>$$f(k) = {n \choose k} p^{k} (1-p)^{n-k}$$ </code> :</p>
<p>$$
f(k) = {n \choose k} p^{k} (1-p)^{n-k}
$$</p>
<hr>
<h2 id="代码块选项">代码块选项</h2>
<p>单击 <code>Insert</code> 按钮，对应快捷键为 <code>Ctrl + Alt + I</code> （macOS：<code>Cmd + Option + I</code> ）。</p>
<p>在 <a href="https://yihui.name/knitr/options" target="_blank" rel="noopener noreffer">https://yihui.name/knitr/options</a> 中有大量的代码块可选项，在此我们列出常用的一部分：</p>
<ul>
<li>
<p><code>eval=TRUE</code> ：执行当前代码块；</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="n">```{r}
</span></span></span><span class="line"><span class="cl"><span class="n"># execute code if the date is later than a specified day
</span></span></span><span class="line"><span class="cl"><span class="n">do_it = Sys.Date() &gt; &#39;2018-02-14&#39;
</span></span></span><span class="line"><span class="cl"><span class="n">```</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">```{r, eval=do_it}
</span></span></span><span class="line"><span class="cl"><span class="n">x = rnorm(100)
</span></span></span><span class="line"><span class="cl"><span class="n">```</span>
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p><code>echo=TRUE</code> ：输出源代码；</p>
</li>
<li>
<p><code>result</code> ：当设置为 <code>'hide'</code> ，文本输出将被隐藏；当设置为 <code>'asis'</code> ，文本输出将被 “原样” 书写。</p>
</li>
<li>
<p><code>collapse=TRUE</code> ：将文本输出和源代码合并为单个代码块输出，更加紧凑；</p>
</li>
<li>
<p><code>warning</code>, <code>message</code>,  <code>error</code> ：是否在输出文档中显示警告、消息和错误；</p>
</li>
<li>
<p><code>include=FALSE</code> ：运行当前代码并且不显示任何源代码与输出结果；</p>
</li>
<li>
<p><code>cache</code> ：是否启用高速缓存。如果启用了缓存，则在下一次编译文档时不会对相同的代码块进行评估（如果代码块没有被修改），这将节省您的时间；</p>
</li>
<li>
<p><code>fig.width</code>，<code>fig.height</code> ：（图形设备）块的大小（英寸）。注意：<code>fig.dim = c(6, 4)</code> 意味着 <code>fig.width = 6</code> 并且 <code>fig.height = 4</code>；</p>
</li>
<li>
<p><code>out.width</code>， <code>out.height</code> ：输出文档中 R 图片的输出大小。可以使用百分比，例如 <code>out.width = '80%'</code> 表示页面宽度的 80%；</p>
</li>
<li>
<p><code>fig.align</code> ：图片的对齐方式；</p>
</li>
<li>
<p><code>dev</code> ：图形设备保存 R 图片的格式。如 <code>'pdf'</code>, <code>'png'</code>, <code>'svg'</code>, <code>'jpeg'</code>；</p>
</li>
<li>
<p><code>fig.cap</code> ：图片标题；</p>
</li>
<li>
<p><code>child</code> ：您可以在主文档中包含子文档。这个选项选择一条通向外部文件的路径。</p>
</li>
</ul>
<p>如果某个选项需要经常被设置为多个代码块中的值，您可以考虑在文档的第一个代码块中全局设置它：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="n">```{r, setup, include=FALSE}
</span></span></span><span class="line"><span class="cl"><span class="n">knitr::opts_chunk$set(fig.width = 8, collapse = TRUE)
</span></span></span><span class="line"><span class="cl"><span class="n">```</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="图片">图片</h3>
<p>本地图片亦可以使用代码块选项进行调节，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="n">```{r, out.width=&#39;25%&#39;, fig.align=&#39;center&#39;, fig.cap=&#39;...&#39;}
</span></span></span><span class="line"><span class="cl"><span class="n">knitr::include_graphics(&#39;images/hex-rmarkdown.png&#39;)
</span></span></span><span class="line"><span class="cl"><span class="n">```</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>如果您想要淡入一个不是由 R 代码生成的图形，您可以使用 <code>knitr::include_graphics()</code>  函数，它使您能够更好地控制图像的属性，而不是像 <code>![alt text or image title](path/to/image)</code> 这样的 Markdown 语法难以调解图片属性。</p>
<h3 id="表格">表格</h3>
<p>使用 <code>knitr::kable()</code>  函数可以简易的创建表格，表格标题可以通过 <code>caption</code>  来设置，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-R" data-lang="R"><span class="line"><span class="cl"><span class="n">```{r tables-mtcars}
</span></span></span><span class="line"><span class="cl"><span class="n">knitr::kable(iris[1:5, ], caption = &#39;A caption&#39;)
</span></span></span><span class="line"><span class="cl"><span class="n">```</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>如果您正在寻找更高级的表格样式控制，建议您使用 <a href="https://cran.r-project.org/package=kableExtra" target="_blank" rel="noopener noreffer">kableExtra</a> 包，它提供了定制 PDF 和 HTML 表格外观的功能。在第 12.3 节中解释了 <code>bookdown</code> 包如何扩展 rmarkdown 的功能，以允许在文本中轻松地交叉引用数字和表格。</p>
<blockquote>
<p><strong>参考文献</strong></p>
<ul>
<li>Xie, Yihui. 2015. <em>Dynamic Documents with R and Knitr</em>. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. <a href="https://yihui.name/knitr/" target="_blank" rel="noopener noreffer">https://yihui.name/knitr/</a>.</li>
</ul>
</blockquote>
<hr>
<h1 id="输出文档">输出文档</h1>
<h2 id="html-文档">HTML 文档</h2>
<p>为了输出 HTML 文档，首先要在 YAML 元数据中写入 <code>output: html_document</code> ：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l">Habits</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="l">John Doe</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="l">March 22, 2005</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="l">html_document</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="目录table-of-contents">目录（Table of contents）</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc_depth</span><span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc_float</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">collapsed</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">smooth_scroll</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li><code>toc: true</code> ：输出目录；</li>
<li><code>toc_depth</code> ：所输出标题的最小级别；</li>
<li><code>toc_float: true</code> ：目录悬停于内容左侧，并一直可见；</li>
<li><code>collapsed</code> (默认为 <code>TRUE</code>)  ：初始只显示顶级标题，随内容滚动目录逐级展开；</li>
<li><code>smooth_scroll</code> (默认为 <code>TRUE</code>) ：点击目录标题是否导航到指定内容。</li>
</ul>
<h3 id="目录编号-section-numbering">目录编号 (Section numbering)</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">toc</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">number_sections</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>注意，如果文档中没有一级标题，那么二级标题将被命名为 <code>0.1</code>, <code>0.2</code> ……</p>
<h3 id="选项卡-tabbed-sections">选项卡 (Tabbed sections)</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gu">## Quarterly Results {.tabset .tabset-fade .tabset-pills}
</span></span></span><span class="line"><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="cl"><span class="gu">### By Product
</span></span></span><span class="line"><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="cl">(tab content)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">### By Region
</span></span></span><span class="line"><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="cl">(tab content)
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://bookdown.org/yihui/rmarkdown/images/tabset.png"
        data-srcset="https://bookdown.org/yihui/rmarkdown/images/tabset.png, https://bookdown.org/yihui/rmarkdown/images/tabset.png 1.5x, https://bookdown.org/yihui/rmarkdown/images/tabset.png 2x"
        data-sizes="auto"
        alt="https://bookdown.org/yihui/rmarkdown/images/tabset.png"
        title="Tabbed sections"
    /></p>
<ul>
<li><code>.tabset</code>  ：使主标题的所有子标题与 .tabset 属性一起出现在选项卡中，而不是作为独立的部分；</li>
<li><code>.tabset-fade</code>  ：选项卡切换时淡入淡出；</li>
<li><code>.tabset-pills</code>  ：改变选项卡外观，使其类似 “药丸”。</li>
</ul>
<h3 id="外观与风格">外观与风格</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">theme</span><span class="p">:</span><span class="w"> </span><span class="l">united</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">highlight</span><span class="p">:</span><span class="w"> </span><span class="l">tango</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li><code>theme</code>  ：主题是从 <a href="https://bootswatch.com/3/" target="_blank" rel="noopener noreffer">Bootswatch</a> 主题库中提取的，适用的主题包括：<code>default</code>, <code>cerulean</code>, <code>journal</code>, <code>flatly</code>, <code>readable</code>, <code>spacelab</code>, <code>united</code>, <code>cosmo</code>, <code>lumen</code>, <code>paper</code>, <code>sandstone</code>, <code>simplex</code>, 和 <code>yeti</code>.</li>
<li><code>highlight</code> ：代码高亮模式。支持的风格包括： <code>default</code>,  <code>tango</code>,  <code>pygments</code>,  <code>kate</code>,  <code>monochrome</code>,  <code>espresso</code>,  <code>zenburn</code>,  <code>haddock</code> 和 <code>textmate</code>.</li>
</ul>
<h3 id="图片选项">图片选项</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">fig_width</span><span class="p">:</span><span class="w"> </span><span class="m">7</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">fig_height</span><span class="p">:</span><span class="w"> </span><span class="m">6</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">fig_caption</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li><code>fig_width</code> 和 <code>fig_height</code>  ：图片宽度和高度；</li>
<li><code>fig_caption</code>  ：控制图片是否包括标题；</li>
<li><code>dev</code>  ：图片渲染格式，默认为 <code>png</code>。</li>
</ul>
<h3 id="表格打印">表格打印</h3>
<p>默认表格输出格式为：</p>
<table>
<thead>
<tr>
<th style="text-align:center">Option</th>
<th style="text-align:left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">default</td>
<td style="text-align:left">Call the <code>print.data.frame</code> generic method</td>
</tr>
<tr>
<td style="text-align:center">kable</td>
<td style="text-align:left">Use the <code>knitr::kable</code> function</td>
</tr>
<tr>
<td style="text-align:center">tibble</td>
<td style="text-align:left">Use the <code>tibble::print.tbl_df</code> function</td>
</tr>
<tr>
<td style="text-align:center">paged</td>
<td style="text-align:left">Use <code>rmarkdown::print.paged_df</code> to create a pageable table</td>
</tr>
</tbody>
</table>
<p>设定为 paged 格式后输出形式为：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Motor Trend Car Road Tests&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">df_print</span><span class="p">:</span><span class="w"> </span><span class="l">paged</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="l">​``` {r, rows.print=5}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="l">mtcars</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="l">​``` </span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://bookdown.org/yihui/rmarkdown/images/paged.png"
        data-srcset="https://bookdown.org/yihui/rmarkdown/images/paged.png, https://bookdown.org/yihui/rmarkdown/images/paged.png 1.5x, https://bookdown.org/yihui/rmarkdown/images/paged.png 2x"
        data-sizes="auto"
        alt="https://bookdown.org/yihui/rmarkdown/images/paged.png"
        title="mtcars"
    /></p>
<p>TABLE 3.2: The options for paged HTML tables.</p>
<table>
<thead>
<tr>
<th>Option</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>max.print</td>
<td>The number of rows to print.</td>
</tr>
<tr>
<td>max.print</td>
<td>The number of rows to print.</td>
</tr>
<tr>
<td>cols.print</td>
<td>The number of columns to display.</td>
</tr>
<tr>
<td>cols.min.print</td>
<td>The minimum number of columns to display.</td>
</tr>
<tr>
<td>pages.print</td>
<td>The number of pages to display under page navigation.</td>
</tr>
<tr>
<td>pages.print</td>
<td>The number of pages to display under page navigation.</td>
</tr>
<tr>
<td>rownames.print</td>
<td>When set to <code>FALSE</code> turns off row names.</td>
</tr>
</tbody>
</table>
<h3 id="代码折叠">代码折叠</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">code_folding</span><span class="p">:</span><span class="w"> </span><span class="l">hide</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li><code>code_folding: hide</code> ：初始默认不显示代码，查看者可点击进行显示；</li>
<li><code>code_folding: show</code> ：初始默认显示代码，查看者可点击进行隐藏；</li>
</ul>
<h3 id="高级定制">高级定制</h3>
<h4 id="保留-markdown-文件">保留 Markdown 文件</h4>
<p>当运行一个 R Markdown 文件（<code>*.Rmd</code>）时，将创造一个 Markdown 文件（<code>*.md</code>）并将该文件通过 Pandoc 转换为 HTML 文件。如果想要保留 Markdown 文件，可以使用 <code>keep_md</code> 选项：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">keep_md</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h4 id="添加本地-html-文档">添加本地 HTML 文档</h4>
<p>可以通过添加额外的 HTML 内容或完全替换核心 Pandoc 模板来完成更高级的输出定制。为了在文档头部或文档主体之前/之后包含内容，您可以使用以下选项：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">includes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">in_header</span><span class="p">:</span><span class="w"> </span><span class="l">header.html</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">before_body</span><span class="p">:</span><span class="w"> </span><span class="l">doc_prefix.html</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">after_body</span><span class="p">:</span><span class="w"> </span><span class="l">doc_suffix.html</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h4 id="自定义模板">自定义模板</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;Habits&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">html_document</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">template</span><span class="p">:</span><span class="w"> </span><span class="l">quarterly_report.html</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>有关模板的其他详细信息，请参考 <a href="https://pandoc.org/MANUAL.html#templates" target="_blank" rel="noopener noreffer">Pandoc 模板</a> 上的文档。您还可以研究默认的 HTML 模板 <a href="https://github.com/jgm/pandoc-templates/" target="_blank" rel="noopener noreffer"><code>default.html5</code></a> 。</p>
<p>其他类型文档格式控制方式类似，如欲详细了解请 <a href="https://bookdown.org/yihui/rmarkdown/documents.html" target="_blank" rel="noopener noreffer">参考原作</a> 。</p>]]></content:encoded></item><item><title>数据可视化-formattable包</title><link>https://philohao.com/2018/03/20180322/</link><pubDate>Thu, 22 Mar 2018 14:00:11 +0800</pubDate><dc:creator>Jianfeng.Hao</dc:creator><author>haojianfeng1997@gmail.com (Jianfeng.Hao)</author><guid isPermaLink="true">https://philohao.com/2018/03/20180322/</guid><description>R 语言 formattable 包使用笔记，记录表格格式化和可读性增强方法。</description><content:encoded><![CDATA[<center><i>
    该软件包使用预定义的格式化规则更加丰富形象地展示数据，<br />
    在存储原始数据的同时将输出结果用格式化输出，使数据在保留原有属性的基础上更加易读
</i></center>
<h2 id="加载包">加载包</h2>
<p>这个包的功能很简单，但是却很具创意性，它颠覆了 R 语言数据以及数据表的呈现方式，数据方面提供了百分数、会计技术等多个 R 尚未支持的数据格式；数据表方面支持自定义视觉化元素，如对某一列数据进行字号、颜色、背景、以及图形化处理，整体的版式仍然保留表格的样式，但是已经具有了表和图结合的意味。</p>
<p>首先加载所需的程序包：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="n">devtools</span><span class="o">::</span><span class="nf">install_github</span><span class="p">(</span><span class="s">&#34;renkun-ken/formattable&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nf">install.packages</span><span class="p">(</span><span class="s">&#34;formattable&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nf">library</span><span class="p">(</span><span class="s">&#34;formattable&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><br />
<hr>
<h2 id="格式化数据">格式化数据</h2>
<p>该包提供了几个典型的可格式化对象，它们包括：<code>percent</code>, <code>comma</code>, <code>currency</code>, <code>accounting</code> 和 <code>scientific</code> 。这些对象实质上是具有预定义格式规则和参数的数值型向量。</p>
<h3 id="percent">percent</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">percent</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">2L</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## Default S3 method:</span>
</span></span><span class="line"><span class="cl"><span class="nf">percent</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">2L</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## S3 method for class &#39;character&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nf">percent</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="kc">NA</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
x：数值型向量
digits：一个整数，用于指示百分比字符串的位数
format：格式类型，传递给formatC</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="n">p</span> <span class="o">&lt;-</span> <span class="nf">percent</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">0.1</span><span class="p">,</span> <span class="m">0.02</span><span class="p">,</span> <span class="m">0.03</span><span class="p">,</span> <span class="m">0.12</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="n">p</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="c1"># 函数保留了保留其数学运算属性</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">p</span> <span class="o">+</span> <span class="m">0.05</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">15.00</span><span class="o">% 7.00%</span>  <span class="m">8.00</span><span class="o">%  17.00%</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">mean</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">6.75</span>%
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="c1"># formattable格式继承了numeric属性，因而保留了数学运算能力</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">class</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="s">&#34;formattable&#34;</span> <span class="s">&#34;numeric&#34;</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="comma">comma</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">comma</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## Default S3 method:</span>
</span></span><span class="line"><span class="cl"><span class="nf">comma</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">2L</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## S3 method for class &#39;character&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nf">comma</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="nf">get_digits</span><span class="p">(</span><span class="n">x</span><span class="p">)),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
x：数值型向量
digits：一个整数，用于指示百分比字符串的位数
format：格式类型，传递给formatC</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">comma</span><span class="p">(</span><span class="m">1000000</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span><span class="p">,</span><span class="m">000</span><span class="p">,</span><span class="m">000.00</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">comma</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">1250000</span><span class="p">,</span> <span class="m">225000</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span><span class="p">,</span><span class="m">250</span><span class="p">,</span><span class="m">000.00</span> <span class="m">225</span><span class="p">,</span><span class="m">000.00</span>  
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">comma</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">1250000</span><span class="p">,</span> <span class="m">225000</span><span class="p">),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;d&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span><span class="p">,</span><span class="m">250</span><span class="p">,</span><span class="m">000</span> <span class="m">225</span><span class="p">,</span><span class="m">000</span>  
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">comma</span><span class="p">(</span><span class="s">&#34;123,345.123&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">123</span><span class="p">,</span><span class="m">345.123</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="currency">currency</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">currency</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">symbol</span><span class="p">,</span> <span class="n">digits</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">sep</span> <span class="o">=</span> <span class="s">&#34;&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## Default S3 method:</span>
</span></span><span class="line"><span class="cl"><span class="nf">currency</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">symbol</span> <span class="o">=</span> <span class="s">&#34;$&#34;</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">2L</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">sep</span> <span class="o">=</span> <span class="s">&#34;&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## S3 method for class &#39;character&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nf">currency</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">symbol</span> <span class="o">=</span> <span class="nf">get_currency_symbol</span><span class="p">(</span><span class="n">x</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">  <span class="n">digits</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="nf">get_digits</span><span class="p">(</span><span class="n">x</span><span class="p">)),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
x：数值型向量
symbol：货币符号
digits：一个整数，用于指示百分比字符串的位数
format：格式类型，传递给formatC
big.mark：千分隔符
sep：符号和值之间的分隔符</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">currency</span><span class="p">(</span><span class="m">200000</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="o">$</span><span class="m">200</span><span class="p">,</span><span class="m">000.00</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">currency</span><span class="p">(</span><span class="m">1200000</span><span class="p">,</span> <span class="s">&#34;USD&#34;</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;d&#34;</span><span class="p">,</span> <span class="n">sep</span> <span class="o">=</span> <span class="s">&#34; &#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="n">USD</span> <span class="m">1</span><span class="p">,</span><span class="m">200</span><span class="p">,</span><span class="m">000</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">currency</span><span class="p">(</span><span class="s">&#34;$ 120,250.50&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="o">$</span><span class="m">120</span><span class="p">,</span><span class="m">250.50</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">currency</span><span class="p">(</span><span class="s">&#34;HK$ 120, 250.50&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="n">HK</span><span class="o">$</span><span class="m">120</span><span class="p">,</span><span class="m">250.50</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="accounting">accounting</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">accounting</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">2L</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## Default S3 method:</span>
</span></span><span class="line"><span class="cl"><span class="nf">accounting</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">2L</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span> <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="kc">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">## S3 method for class &#39;character&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nf">accounting</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="nf">max</span><span class="p">(</span><span class="nf">get_digits</span><span class="p">(</span><span class="n">x</span><span class="p">)),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;f&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="n">big.mark</span> <span class="o">=</span> <span class="s">&#34;,&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
x：数值型向量
digits：一个整数，用于指示小数位数
format：格式类型，传递给formatC
big.mark：千分隔符</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="c1"># 两位小数，同时负值加括号</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">balance</span> <span class="o">&lt;-</span> <span class="nf">accounting</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">1000</span><span class="p">,</span> <span class="m">500</span><span class="p">,</span> <span class="m">200</span><span class="p">,</span> <span class="m">-150</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">1200</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">balance</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span><span class="p">,</span><span class="m">000.00</span> <span class="m">500.00</span>   <span class="m">200.00</span>   <span class="p">(</span><span class="m">150.00</span><span class="p">)</span> <span class="m">0.00</span>     <span class="m">1</span><span class="p">,</span><span class="m">200.00</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">accounting</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">1200</span><span class="p">,</span> <span class="m">-3500</span><span class="p">,</span> <span class="m">2600</span><span class="p">),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;d&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span><span class="p">,</span><span class="m">200</span>   <span class="p">(</span><span class="m">3</span><span class="p">,</span><span class="m">500</span><span class="p">)</span> <span class="m">2</span><span class="p">,</span><span class="m">600</span>  
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="c1"># 函数保留了保留其数学运算属性</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">balance</span> <span class="o">+</span> <span class="m">1000</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">2</span><span class="p">,</span><span class="m">000.00</span> <span class="m">1</span><span class="p">,</span><span class="m">500.00</span> <span class="m">1</span><span class="p">,</span><span class="m">200.00</span> <span class="m">850.00</span>   <span class="m">1</span><span class="p">,</span><span class="m">000.00</span> <span class="m">2</span><span class="p">,</span><span class="m">200.00</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="scientific">scientific</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">scientific</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;e&#34;</span><span class="p">,</span> <span class="s">&#34;E&#34;</span><span class="p">),</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">4</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
x：数值型向量
digits：一个整数，用于指示小数位数
format：格式类型，传递给formatC</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">scientific</span><span class="p">(</span><span class="m">1253421</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">8</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1.25342100e+06</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">scientific</span><span class="p">(</span><span class="m">1253421</span><span class="p">,</span> <span class="n">digits</span> <span class="o">=</span> <span class="m">8</span><span class="p">,</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;E&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1.25342100E+06</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="复杂数据结构">复杂数据结构</h3>
<p><code>formattable()</code> 将高度可定制的格式应用于各种类的对象，如 <code>numeric</code>, <code>logical</code>, <code>factor</code>, <code>Date</code>, <code>data.frame</code> 等。例如，数据框可能也可存储格式化的列向量（这是自然地，因为数据框就是由若干个等长的向量组成的）：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">df</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">id</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="p">,</span> <span class="m">2</span><span class="p">,</span> <span class="m">3</span><span class="p">,</span> <span class="m">4</span><span class="p">,</span> <span class="m">5</span><span class="p">),</span> 
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">name</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;A1&#34;</span><span class="p">,</span> <span class="s">&#34;A2&#34;</span><span class="p">,</span> <span class="s">&#34;B1&#34;</span><span class="p">,</span> <span class="s">&#34;B2&#34;</span><span class="p">,</span> <span class="s">&#34;C1&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">balance</span> <span class="o">=</span> <span class="nf">accounting</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">52500</span><span class="p">,</span> <span class="m">36150</span><span class="p">,</span> <span class="m">25000</span><span class="p">,</span> <span class="m">18300</span><span class="p">,</span> <span class="m">7600</span><span class="p">),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;d&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">growth</span> <span class="o">=</span> <span class="nf">percent</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">0.3</span><span class="p">,</span> <span class="m">0.3</span><span class="p">,</span> <span class="m">0.1</span><span class="p">,</span> <span class="m">0.15</span><span class="p">,</span> <span class="m">0.15</span><span class="p">),</span> <span class="n">format</span> <span class="o">=</span> <span class="s">&#34;d&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">ready</span> <span class="o">=</span> <span class="nf">formattable</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="kc">TRUE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">),</span> <span class="s">&#34;yes&#34;</span><span class="p">,</span> <span class="s">&#34;no&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">df</span>
</span></span><span class="line"><span class="cl">  <span class="n">id</span> <span class="n">name</span> <span class="n">balance</span> <span class="n">growth</span> <span class="n">ready</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>  <span class="m">1</span>   <span class="n">A1</span>  <span class="m">52</span><span class="p">,</span><span class="m">500</span>    <span class="m">30</span><span class="o">%   yes
</span></span></span><span class="line"><span class="cl"><span class="o">2  2   A2  36,150    30%</span>   <span class="n">yes</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span>  <span class="m">3</span>   <span class="n">B1</span>  <span class="m">25</span><span class="p">,</span><span class="m">000</span>    <span class="m">10</span><span class="o">%    no
</span></span></span><span class="line"><span class="cl"><span class="o">4  4   B2  18,300    15%</span>    <span class="n">no</span>
</span></span><span class="line"><span class="cl"><span class="m">5</span>  <span class="m">5</span>   <span class="n">C1</span>   <span class="m">7</span><span class="p">,</span><span class="m">600</span>    <span class="m">15</span>%   <span class="n">yes</span>
</span></span></code></pre></td></tr></table>
</div>
</div><br />
<hr>
<h2 id="格式化数据表">格式化数据表</h2>
<h3 id="举个栗子">举个栗子</h3>
<p>普通的表格数据如下所示：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">df</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">id</span> <span class="o">=</span> <span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">name</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;Bob&#34;</span><span class="p">,</span> <span class="s">&#34;Ashley&#34;</span><span class="p">,</span> <span class="s">&#34;James&#34;</span><span class="p">,</span> <span class="s">&#34;David&#34;</span><span class="p">,</span> <span class="s">&#34;Jenny&#34;</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl"><span class="o">+</span>            <span class="s">&#34;Hans&#34;</span><span class="p">,</span> <span class="s">&#34;Leo&#34;</span><span class="p">,</span> <span class="s">&#34;John&#34;</span><span class="p">,</span> <span class="s">&#34;Emily&#34;</span><span class="p">,</span> <span class="s">&#34;Lee&#34;</span><span class="p">),</span> 
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">age</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="m">28</span><span class="p">,</span> <span class="m">27</span><span class="p">,</span> <span class="m">30</span><span class="p">,</span> <span class="m">28</span><span class="p">,</span> <span class="m">29</span><span class="p">,</span> <span class="m">29</span><span class="p">,</span> <span class="m">27</span><span class="p">,</span> <span class="m">27</span><span class="p">,</span> <span class="m">31</span><span class="p">,</span> <span class="m">30</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">grade</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;C&#34;</span><span class="p">,</span> <span class="s">&#34;A&#34;</span><span class="p">,</span> <span class="s">&#34;A&#34;</span><span class="p">,</span> <span class="s">&#34;C&#34;</span><span class="p">,</span> <span class="s">&#34;B&#34;</span><span class="p">,</span> <span class="s">&#34;B&#34;</span><span class="p">,</span> <span class="s">&#34;B&#34;</span><span class="p">,</span> <span class="s">&#34;A&#34;</span><span class="p">,</span> <span class="s">&#34;C&#34;</span><span class="p">,</span> <span class="s">&#34;C&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">test1_score</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="m">8.9</span><span class="p">,</span> <span class="m">9.5</span><span class="p">,</span> <span class="m">9.6</span><span class="p">,</span> <span class="m">8.9</span><span class="p">,</span> <span class="m">9.1</span><span class="p">,</span> <span class="m">9.3</span><span class="p">,</span> <span class="m">9.3</span><span class="p">,</span> <span class="m">9.9</span><span class="p">,</span> <span class="m">8.5</span><span class="p">,</span> <span class="m">8.6</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">test2_score</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="m">9.1</span><span class="p">,</span> <span class="m">9.1</span><span class="p">,</span> <span class="m">9.2</span><span class="p">,</span> <span class="m">9.1</span><span class="p">,</span> <span class="m">8.9</span><span class="p">,</span> <span class="m">8.5</span><span class="p">,</span> <span class="m">9.2</span><span class="p">,</span> <span class="m">9.3</span><span class="p">,</span> <span class="m">9.1</span><span class="p">,</span> <span class="m">8.8</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">final_score</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="m">9</span><span class="p">,</span> <span class="m">9.3</span><span class="p">,</span> <span class="m">9.4</span><span class="p">,</span> <span class="m">9</span><span class="p">,</span> <span class="m">9</span><span class="p">,</span> <span class="m">8.9</span><span class="p">,</span> <span class="m">9.25</span><span class="p">,</span> <span class="m">9.6</span><span class="p">,</span> <span class="m">8.8</span><span class="p">,</span> <span class="m">8.7</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">registered</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="kc">TRUE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">stringsAsFactors</span> <span class="o">=</span> <span class="kc">FALSE</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">df</span>
</span></span><span class="line"><span class="cl">   <span class="n">id</span>   <span class="n">name</span> <span class="n">age</span> <span class="n">grade</span> <span class="n">test1_score</span> <span class="n">test2_score</span> <span class="n">final_score</span> <span class="n">registered</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>   <span class="m">1</span>    <span class="n">Bob</span>  <span class="m">28</span>     <span class="n">C</span>         <span class="m">8.9</span>         <span class="m">9.1</span>        <span class="m">9.00</span>       <span class="kc">TRUE</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span>   <span class="m">2</span> <span class="n">Ashley</span>  <span class="m">27</span>     <span class="n">A</span>         <span class="m">9.5</span>         <span class="m">9.1</span>        <span class="m">9.30</span>      <span class="kc">FALSE</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span>   <span class="m">3</span>  <span class="n">James</span>  <span class="m">30</span>     <span class="n">A</span>         <span class="m">9.6</span>         <span class="m">9.2</span>        <span class="m">9.40</span>       <span class="kc">TRUE</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span>   <span class="m">4</span>  <span class="n">David</span>  <span class="m">28</span>     <span class="n">C</span>         <span class="m">8.9</span>         <span class="m">9.1</span>        <span class="m">9.00</span>      <span class="kc">FALSE</span>
</span></span><span class="line"><span class="cl"><span class="m">5</span>   <span class="m">5</span>  <span class="n">Jenny</span>  <span class="m">29</span>     <span class="n">B</span>         <span class="m">9.1</span>         <span class="m">8.9</span>        <span class="m">9.00</span>       <span class="kc">TRUE</span>
</span></span><span class="line"><span class="cl"><span class="m">6</span>   <span class="m">6</span>   <span class="n">Hans</span>  <span class="m">29</span>     <span class="n">B</span>         <span class="m">9.3</span>         <span class="m">8.5</span>        <span class="m">8.90</span>       <span class="kc">TRUE</span>
</span></span><span class="line"><span class="cl"><span class="m">7</span>   <span class="m">7</span>    <span class="n">Leo</span>  <span class="m">27</span>     <span class="n">B</span>         <span class="m">9.3</span>         <span class="m">9.2</span>        <span class="m">9.25</span>       <span class="kc">TRUE</span>
</span></span><span class="line"><span class="cl"><span class="m">8</span>   <span class="m">8</span>   <span class="n">John</span>  <span class="m">27</span>     <span class="n">A</span>         <span class="m">9.9</span>         <span class="m">9.3</span>        <span class="m">9.60</span>      <span class="kc">FALSE</span>
</span></span><span class="line"><span class="cl"><span class="m">9</span>   <span class="m">9</span>  <span class="n">Emily</span>  <span class="m">31</span>     <span class="n">C</span>         <span class="m">8.5</span>         <span class="m">9.1</span>        <span class="m">8.80</span>      <span class="kc">FALSE</span>
</span></span><span class="line"><span class="cl"><span class="m">10</span> <span class="m">10</span>    <span class="n">Lee</span>  <span class="m">30</span>     <span class="n">C</span>         <span class="m">8.6</span>         <span class="m">8.8</span>        <span class="m">8.70</span>      <span class="kc">FALSE</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>格式化表格，具有以下可视化效果：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">formattable</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl"><span class="o">+</span>             <span class="nf">list</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="n">age</span> <span class="o">=</span> <span class="nf">color_tile</span><span class="p">(</span><span class="s">&#34;white&#34;</span><span class="p">,</span> <span class="s">&#34;orange&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="n">grade</span> <span class="o">=</span> <span class="nf">formatter</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="s">&#34;span&#34;</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="n">style</span> <span class="o">=</span> <span class="n">x</span> <span class="o">~</span> <span class="nf">ifelse</span><span class="p">(</span><span class="n">x</span> <span class="o">==</span> <span class="s">&#34;A&#34;</span><span class="p">,</span> <span class="nf">style</span><span class="p">(</span><span class="n">color</span> <span class="o">=</span> <span class="s">&#34;green&#34;</span><span class="p">,</span> <span class="n">font.weight</span> <span class="o">=</span> <span class="s">&#34;bold&#34;</span><span class="p">),</span> <span class="kc">NA</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="nf">area</span><span class="p">(</span><span class="n">col</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="n">test1_score</span><span class="p">,</span> <span class="n">test2_score</span><span class="p">))</span> <span class="o">~</span> <span class="nf">normalize_bar</span><span class="p">(</span><span class="s">&#34;pink&#34;</span><span class="p">,</span> <span class="m">0.2</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="n">final_score</span> <span class="o">=</span> <span class="nf">formatter</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="s">&#34;span&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="n">style</span> <span class="o">=</span> <span class="n">x</span> <span class="o">~</span> <span class="nf">style</span><span class="p">(</span><span class="n">color</span> <span class="o">=</span> <span class="nf">ifelse</span><span class="p">(</span><span class="nf">rank</span><span class="p">(</span><span class="o">-</span><span class="n">x</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="m">3</span><span class="p">,</span> <span class="s">&#34;green&#34;</span><span class="p">,</span> <span class="s">&#34;gray&#34;</span><span class="p">)),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="n">x</span> <span class="o">~</span> <span class="nf">sprintf</span><span class="p">(</span><span class="s">&#34;%.2f (rank: %02d)&#34;</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="nf">rank</span><span class="p">(</span><span class="o">-</span><span class="n">x</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="n">registered</span> <span class="o">=</span> <span class="nf">formatter</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="s">&#34;span&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="n">style</span> <span class="o">=</span> <span class="n">x</span> <span class="o">~</span> <span class="nf">style</span><span class="p">(</span><span class="n">color</span> <span class="o">=</span> <span class="nf">ifelse</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s">&#34;green&#34;</span><span class="p">,</span> <span class="s">&#34;red&#34;</span><span class="p">)),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>                 <span class="n">x</span> <span class="o">~</span> <span class="nf">icontext</span><span class="p">(</span><span class="nf">ifelse</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s">&#34;ok&#34;</span><span class="p">,</span> <span class="s">&#34;remove&#34;</span><span class="p">),</span> <span class="nf">ifelse</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s">&#34;Yes&#34;</span><span class="p">,</span> <span class="s">&#34;No&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>               <span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>             <span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span> <span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><img
        class="lazyload"
        data-src="https://blog-1255524710.cos.ap-beijing.myqcloud.com/cover/formattable.png"
        data-srcset="https://blog-1255524710.cos.ap-beijing.myqcloud.com/cover/formattable.png, https://blog-1255524710.cos.ap-beijing.myqcloud.com/cover/formattable.png 1.5x, https://blog-1255524710.cos.ap-beijing.myqcloud.com/cover/formattable.png 2x"
        data-sizes="auto"
        alt="https://blog-1255524710.cos.ap-beijing.myqcloud.com/cover/formattable.png"
        title="formattable.png"
    /></p>
<p>表格中使用的图标集由<a href="GLYPHICONS.com" rel="">GLYPHICONS.com</a>提供并包含在<a href="https://getbootstrap.com/docs/3.3/components/" target="_blank" rel="noopener noreffer">Bootstrap</a>中。</p>
<p>注意到一共用了 <code>文字格式自定义、文字背景自定义、文本自定义</code> 三种自定义可视化类型：</p>
<blockquote>
<p>color_tile函数用于输出按照数值量级进行颜色背景填充的列。</p>
<p>formatter函数提供字体显示格式的自定义，grade列自定义了值为A的记录显示绿色，并将字体加粗，否则忽略。
test1_score, test2_score两列通过area函数在对应字体背景位置使用条形图来代表指标量级大小，颜色填充粉色。
final_score列对指标按照top3显示绿色，其余显示灰色，同时将内容显示格式自定义为浮点型+(rank:名次)进行显示。
registered列则在对填充颜色按照对应布尔值进行显示（TRUE显示绿色、FALSE显示红色）之外，在左侧添加了对用的icon文本（TRUE显示绿色对号，FALSE显示红色叉号）。</p>
</blockquote>
<hr>
<h3 id="文字格式自定义">文字格式自定义</h3>
<h4 id="color_text">color_text</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">formattable</span><span class="p">(</span><span class="n">mtcars</span><span class="p">,</span> <span class="nf">list</span><span class="p">(</span><span class="n">mpg</span> <span class="o">=</span> <span class="nf">color_text</span><span class="p">(</span><span class="s">&#34;black&#34;</span><span class="p">,</span> <span class="s">&#34;red&#34;</span><span class="p">)))</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="formatter">formatter</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">formatter</span><span class="p">(</span><span class="n">.tag</span><span class="p">,</span> <span class="n">style</span> <span class="o">=</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
.tag：HTML 标签，默认为 span
style：CSS语句
注：类似 x ~ expr 的公式将表现得像 function(x) expr</p>
</blockquote>
<p>诸多CSS样式于此可见：<a href="https://www.w3.org/Style/CSS/all-properties" target="_blank" rel="noopener noreffer">List of CSS properties</a></p>
<h3 id="文字背景自定义">文字背景自定义</h3>
<h4 id="色块函数">色块函数</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="c1"># color_tile(&#34;color1&#34;, &#34;color2&#34;)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出按照数值量级进行颜色背景填充的列</span>
</span></span><span class="line"><span class="cl"><span class="nf">formattable</span><span class="p">(</span><span class="n">mtcars</span><span class="p">,</span> <span class="nf">list</span><span class="p">(</span><span class="n">mpg</span> <span class="o">=</span> <span class="nf">color_tile</span><span class="p">(</span><span class="s">&#34;white&#34;</span><span class="p">,</span> <span class="s">&#34;pink&#34;</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># color_bar(color = &#34;lightgray&#34;, fun = &#34;proportion&#34;, ...)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出有颜色填充的，大小以数值量级为比例的色块</span>
</span></span><span class="line"><span class="cl"><span class="nf">formattable</span><span class="p">(</span><span class="n">mtcars</span><span class="p">,</span> <span class="nf">list</span><span class="p">(</span><span class="n">mpg</span> <span class="o">=</span> <span class="nf">color_bar</span><span class="p">(</span><span class="s">&#34;lightgray&#34;</span><span class="p">,</span> <span class="n">proportion</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># normalize_bar(color = &#34;lightgray&#34;, ...)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># proportion_bar(color = &#34;lightgray&#34;, ...)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 按正常配置输出大小以数值量级为比例的色块</span>
</span></span><span class="line"><span class="cl"><span class="nf">formattable</span><span class="p">(</span><span class="n">mtcars</span><span class="p">,</span> <span class="nf">list</span><span class="p">(</span><span class="n">mpg</span> <span class="o">=</span> <span class="nf">normalize_bar</span><span class="p">()))</span>
</span></span><span class="line"><span class="cl"><span class="nf">formattable</span><span class="p">(</span><span class="n">mtcars</span><span class="p">,</span> <span class="nf">list</span><span class="p">(</span><span class="n">mpg</span> <span class="o">=</span> <span class="nf">proportion_bar</span><span class="p">()))</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="area">area</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">area</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span> <span class="o">~</span> <span class="n">formatter</span><span class="o">/</span><span class="n">normalize_bar</span>……
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
row/col：选取的行与列，默认为全选</p>
</blockquote>
<h3 id="文本自定义">文本自定义</h3>
<h4 id="icontext">icontext</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">icontext</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="nf">list</span><span class="p">(</span><span class="kc">NULL</span><span class="p">),</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>参数列表：
icon：图标名称的字符矢量或字符矢量列表
text：文本的字符向量</p>
</blockquote>
<p>使用的图标集由<a href="GLYPHICONS.com" rel="">GLYPHICONS.com</a>提供并包含在<a href="https://getbootstrap.com/docs/3.3/components/" target="_blank" rel="noopener noreffer">Bootstrap</a>中。</p>
<br />
<hr>
<h2 id="致谢">致谢</h2>
<blockquote>
<h3 id="参考文章">参考文章</h3>
<ul>
<li><a href="https://github.com/renkun-ken/formattable" target="_blank" rel="noopener noreffer">Github：任坤的formattable项目</a></li>
<li><a href="https://mp.weixin.qq.com/s/QAr7LYx4jgvOlNBVAUZX5g" target="_blank" rel="noopener noreffer">杜雨：一款脑洞大开的表格可视化神器</a></li>
</ul>
</blockquote>]]></content:encoded></item><item><title>数据操作-apply函数族</title><link>https://philohao.com/2018/03/20180315/</link><pubDate>Thu, 15 Mar 2018 12:19:00 +0800</pubDate><dc:creator>Jianfeng.Hao</dc:creator><author>haojianfeng1997@gmail.com (Jianfeng.Hao)</author><guid isPermaLink="true">https://philohao.com/2018/03/20180315/</guid><description>R 语言 apply 函数族学习笔记，记录不同数据结构下的循环处理方式。</description><content:encoded><![CDATA[<center><i>
    R 作为一种向量化的编程语言，一大特征便是以向量计算替代了循环计算，使效率大大提升。<br>
    apply函数族正是为解决数据循环处理问题而生的 —— 面向不同数据类型，生成不同返回值的包含8个相关函数的函数族。
</i></center>
<h2 id="为何要用apply">为何要用apply？</h2>
<p>在使用 R 时，要尽量用 array 的方式思考，避免 for 循环，写过多的 for 循环代码，最后把 R 代码写的跟 C 似得说明你没有进入 R 的思考方式，是一种费力不讨好的行为。那么不用循环怎么实现迭代呢？apply函数族是一把利器，它不是一个函数，而是一族功能类似的函数。</p>
<br>
<hr>
<h2 id="语法详解">语法详解</h2>
<h3 id="apply">apply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">apply</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">margin</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
X：数组、矩阵、数据框
margin：按维度运算，1表示按行，2表示按列，c(1,3)表示第1、3维
FUN：要使用的函数</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">mat</span> <span class="o">&lt;-</span> <span class="nf">matrix</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">12</span><span class="p">,</span> <span class="m">3</span><span class="p">,</span> <span class="m">4</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">mat</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">4</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">4</span>    <span class="m">7</span>   <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">5</span>    <span class="m">8</span>   <span class="m">11</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">3</span>    <span class="m">6</span>    <span class="m">9</span>   <span class="m">12</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">apply</span><span class="p">(</span><span class="n">mat</span><span class="p">,</span> <span class="m">2</span><span class="p">,</span> <span class="n">sum</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span>  <span class="m">6</span> <span class="m">15</span> <span class="m">24</span> <span class="m">33</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">ary</span> <span class="o">&lt;-</span> <span class="nf">array</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">12</span><span class="p">,</span> <span class="nf">c</span><span class="p">(</span><span class="m">2</span><span class="p">,</span><span class="m">3</span><span class="p">,</span><span class="m">2</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">ary</span>
</span></span><span class="line"><span class="cl"><span class="p">,</span> <span class="p">,</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">3</span>    <span class="m">5</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">4</span>    <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="p">,</span> <span class="p">,</span> <span class="m">2</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">7</span>    <span class="m">9</span>   <span class="m">11</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">8</span>   <span class="m">10</span>   <span class="m">12</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">apply</span><span class="p">(</span><span class="n">ary</span><span class="p">,</span> <span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="m">3</span><span class="p">),</span> <span class="n">sum</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">9</span>   <span class="m">27</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>   <span class="m">12</span>   <span class="m">30</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span><span class="n">x1</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="m">6</span><span class="o">:</span><span class="m">10</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span>
</span></span><span class="line"><span class="cl">  <span class="n">x1</span> <span class="n">x2</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>  <span class="m">1</span>  <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span>  <span class="m">2</span>  <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span>  <span class="m">3</span>  <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span>  <span class="m">4</span>  <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="m">5</span>  <span class="m">5</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">apply</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="m">2</span><span class="p">,</span> <span class="n">mean</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">x1</span> <span class="n">x2</span> 
</span></span><span class="line"><span class="cl"> <span class="m">3</span>  <span class="m">8</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="tapply">tapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">tapply</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">INDEX</span><span class="p">,</span> <span class="n">FUN</span> <span class="o">=</span> <span class="kc">NULL</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">simplify</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
X：向量、数组
INDEX：用于分组的索引
FUN：要使用的函数
simplify : 是否数组化，当值TRUE时，输出结果按数组进行分组输出</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">x</span> <span class="o">&lt;-</span> <span class="m">1</span><span class="o">:</span><span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">INDEX</span> <span class="o">&lt;-</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#39;a&#39;</span><span class="p">,</span><span class="s">&#39;a&#39;</span><span class="p">,</span><span class="s">&#39;b&#39;</span><span class="p">,</span><span class="s">&#39;c&#39;</span><span class="p">,</span><span class="s">&#39;c&#39;</span><span class="p">,</span><span class="s">&#39;c&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">tapply</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">INDEX</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">3</span> <span class="m">3</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">tapply</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">INDEX</span><span class="p">,</span> <span class="n">sum</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="n">a</span>  <span class="n">b</span>  <span class="n">c</span> 
</span></span><span class="line"><span class="cl"> <span class="m">3</span>  <span class="m">3</span> <span class="m">15</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">mat</span> <span class="o">&lt;-</span> <span class="nf">matrix</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">,</span> <span class="m">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">mat</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">4</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">5</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">3</span>    <span class="m">5</span>    <span class="m">7</span>    <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">4</span>    <span class="m">6</span>    <span class="m">8</span>   <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">INDEX</span> <span class="o">&lt;-</span> <span class="nf">matrix</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="nf">rep</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="m">5</span><span class="p">),</span> <span class="nf">rep</span><span class="p">(</span><span class="m">2</span><span class="p">,</span><span class="m">5</span><span class="p">)),</span> <span class="n">nrow</span><span class="o">=</span><span class="m">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">INDEX</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">4</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">5</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">1</span>    <span class="m">1</span>    <span class="m">2</span>    <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">1</span>    <span class="m">2</span>    <span class="m">2</span>    <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">tapply</span><span class="p">(</span><span class="n">mat</span><span class="p">,</span> <span class="n">INDEX</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span> <span class="m">1</span> <span class="m">1</span> <span class="m">1</span> <span class="m">1</span> <span class="m">1</span> <span class="m">2</span> <span class="m">2</span> <span class="m">2</span> <span class="m">2</span> <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">tapply</span><span class="p">(</span><span class="n">mat</span><span class="p">,</span> <span class="n">INDEX</span><span class="p">,</span> <span class="n">mean</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span> <span class="m">2</span> 
</span></span><span class="line"><span class="cl"><span class="m">3</span> <span class="m">8</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="lapply">lapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">lapply</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
X：列表、向量、数据框
FUN：要使用的函数</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">lst</span> <span class="o">&lt;-</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="nf">seq</span><span class="p">(</span><span class="m">0</span><span class="p">,</span><span class="m">7</span><span class="p">,</span><span class="m">2</span><span class="p">),</span> <span class="n">c</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">2</span><span class="p">,</span><span class="m">5</span><span class="p">,</span><span class="m">8</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">lst</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span>  <span class="m">1</span>  <span class="m">2</span>  <span class="m">3</span>  <span class="m">4</span>  <span class="m">5</span>  <span class="m">6</span>  <span class="m">7</span>  <span class="m">8</span>  <span class="m">9</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">0</span> <span class="m">2</span> <span class="m">4</span> <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">c</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">2</span> <span class="m">5</span> <span class="m">8</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">lapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">mean</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">5.5</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">3</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">c</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">5</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span><span class="n">x1</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="m">6</span><span class="o">:</span><span class="m">10</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span>
</span></span><span class="line"><span class="cl">  <span class="n">x1</span> <span class="n">x2</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>  <span class="m">1</span>  <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span>  <span class="m">2</span>  <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span>  <span class="m">3</span>  <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span>  <span class="m">4</span>  <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="m">5</span>  <span class="m">5</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">lapply</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">sum</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">x1</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">15</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">x2</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">40</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">isLeapYear</span> <span class="o">&lt;-</span> <span class="kr">function</span><span class="p">(</span><span class="n">a</span><span class="p">){</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="kr">if</span><span class="p">(</span> <span class="p">(</span><span class="n">a</span><span class="o">%%</span><span class="m">4</span><span class="o">==</span><span class="m">0</span> <span class="o">&amp;</span> <span class="n">a</span><span class="o">%/%</span><span class="m">100</span><span class="o">!=</span><span class="m">0</span><span class="p">)</span> <span class="o">|</span> <span class="n">a</span><span class="o">%%</span><span class="m">400</span><span class="o">==</span><span class="m">0</span> <span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>     <span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">a</span> <span class="o">&lt;-</span> <span class="m">1900</span><span class="o">:</span><span class="m">1910</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">unlist</span><span class="p">(</span><span class="nf">lapply</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">isLeapYear</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1900</span> <span class="m">1904</span> <span class="m">1908</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="rapply">rapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">rapply</span><span class="p">(</span><span class="n">list</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">classes</span> <span class="o">=</span> <span class="s">&#34;ANY&#34;</span><span class="p">,</span> <span class="n">deflt</span> <span class="o">=</span> <span class="kc">NULL</span><span class="p">,</span><span class="n">how</span> <span class="o">=</span> <span class="nf">c</span><span class="p">(</span><span class="s">&#34;unlist&#34;</span><span class="p">,</span> <span class="s">&#34;replace&#34;</span><span class="p">,</span> <span class="s">&#34;list&#34;</span><span class="p">),</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
list：列表
f：要使用的函数
classes： 匹配类型, ANY为所有类型
deflt: 非匹配类型的默认值
how: 3种操作方式，</p>
<ul>
<li>replace：则用调用f后的结果替换原list中原来的元素；</li>
<li>list：新建一个list，类型匹配调用f函数，不匹配赋值为deflt；</li>
<li>unlist：执行一次unlist(recursive = TRUE)操作</li>
</ul>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">lst</span> <span class="o">&lt;-</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="nf">list</span><span class="p">(</span><span class="n">aa</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">),</span> <span class="n">ab</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">6</span><span class="o">:</span><span class="m">10</span><span class="p">)),</span> <span class="n">b</span><span class="o">=</span><span class="nf">list</span><span class="p">(</span><span class="n">ba</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">lst</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span><span class="o">$</span><span class="n">aa</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span> <span class="m">5</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span><span class="o">$</span><span class="n">ab</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span>  <span class="m">6</span>  <span class="m">7</span>  <span class="m">8</span>  <span class="m">9</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">ba</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span>  <span class="m">1</span>  <span class="m">2</span>  <span class="m">3</span>  <span class="m">4</span>  <span class="m">5</span>  <span class="m">6</span>  <span class="m">7</span>  <span class="m">8</span>  <span class="m">9</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">rapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">sum</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s">&#34;replace&#34;</span><span class="p">)</span>  <span class="c1"># 输出结果为list</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span><span class="o">$</span><span class="n">aa</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">15</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span><span class="o">$</span><span class="n">ab</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">40</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">ba</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">55</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">rapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">sum</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s">&#34;unlist&#34;</span><span class="p">)</span>   <span class="c1"># 输出结果为vector</span>
</span></span><span class="line"><span class="cl"><span class="n">a.aa</span> <span class="n">a.ab</span> <span class="n">b.ba</span> 
</span></span><span class="line"><span class="cl">  <span class="m">15</span>   <span class="m">40</span>   <span class="m">55</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="sapply">sapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">sapply</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">simplify</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="n">USE.NAMES</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
X：列表、向量、数据框
FUN：要使用的函数
simplify: 若FALSE，等价于lapply。否则，将lapply输出的list简化为vector或matrix
USE.NAMES: 如果X为字符串，TRUE设置字符串为数据名，FALSE不设置</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">lst</span> <span class="o">&lt;-</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">),</span> <span class="n">b</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">6</span><span class="o">:</span><span class="m">10</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">sum</span><span class="p">,</span> <span class="n">simplify</span> <span class="o">=</span> <span class="bp">F</span><span class="p">)</span>    <span class="c1"># 输出list</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">15</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">40</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">sum</span><span class="p">)</span>                  <span class="c1"># 输出vector</span>
</span></span><span class="line"><span class="cl"> <span class="n">a</span>  <span class="n">b</span> 
</span></span><span class="line"><span class="cl"><span class="m">15</span> <span class="m">40</span> 
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">fivenum</span><span class="p">)</span>              <span class="c1"># 输出matrix</span>
</span></span><span class="line"><span class="cl">     <span class="n">a</span>  <span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span> <span class="m">1</span>  <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span> <span class="m">2</span>  <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span> <span class="m">3</span>  <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span> <span class="m">4</span>  <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="n">[5</span><span class="p">,</span><span class="n">]</span> <span class="m">5</span> <span class="m">10</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">val</span> <span class="o">&lt;-</span> <span class="nf">head</span><span class="p">(</span><span class="kc">letters</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">val</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="s">&#34;a&#34;</span> <span class="s">&#34;b&#34;</span> <span class="s">&#34;c&#34;</span> <span class="s">&#34;d&#34;</span> <span class="s">&#34;e&#34;</span> <span class="s">&#34;f&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sapply</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">paste</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="n">a</span>   <span class="n">b</span>   <span class="n">c</span>   <span class="n">d</span>   <span class="n">e</span>   <span class="n">f</span> 
</span></span><span class="line"><span class="cl"><span class="s">&#34;a&#34;</span> <span class="s">&#34;b&#34;</span> <span class="s">&#34;c&#34;</span> <span class="s">&#34;d&#34;</span> <span class="s">&#34;e&#34;</span> <span class="s">&#34;f&#34;</span> 
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sapply</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">paste</span><span class="p">,</span> <span class="n">USE.NAMES</span> <span class="o">=</span> <span class="bp">F</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="s">&#34;a&#34;</span> <span class="s">&#34;b&#34;</span> <span class="s">&#34;c&#34;</span> <span class="s">&#34;d&#34;</span> <span class="s">&#34;e&#34;</span> <span class="s">&#34;f&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="vapply">vapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">vapply</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="n">FUN.VALUE</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">USE.NAMES</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
X：列表、数据框
FUN：要使用的函数
FUN.VALUE：定义返回值的行名row.names
USE.NAMES: 如果X为字符串，TRUE设置字符串为数据名，FALSE不设置</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">lst</span> <span class="o">&lt;-</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">),</span> <span class="n">b</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">6</span><span class="o">:</span><span class="m">10</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">res</span> <span class="o">&lt;-</span> <span class="nf">vapply</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="nf">c</span><span class="p">(</span><span class="nf">min</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nf">max</span><span class="p">(</span><span class="n">x</span><span class="p">)),</span> <span class="nf">c</span><span class="p">(</span><span class="n">min.</span><span class="o">=</span><span class="m">0</span><span class="p">,</span> <span class="n">max.</span><span class="o">=</span><span class="m">0</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">res</span>
</span></span><span class="line"><span class="cl">     <span class="n">a</span>  <span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="n">min.</span> <span class="m">1</span>  <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="n">max.</span> <span class="m">5</span> <span class="m">10</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span><span class="nf">cbind</span><span class="p">(</span><span class="n">x1</span><span class="o">=</span><span class="m">3</span><span class="p">,</span> <span class="n">x2</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">2</span><span class="o">:</span><span class="m">1</span><span class="p">,</span><span class="m">4</span><span class="o">:</span><span class="m">5</span><span class="p">)))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span>
</span></span><span class="line"><span class="cl">  <span class="n">x1</span> <span class="n">x2</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>  <span class="m">3</span>  <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span>  <span class="m">3</span>  <span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span>  <span class="m">3</span>  <span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span>  <span class="m">3</span>  <span class="m">5</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">vapply</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">cumsum</span><span class="p">,</span> <span class="n">FUN.VALUE</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s">&#39;a&#39;</span><span class="o">=</span><span class="m">0</span><span class="p">,</span><span class="s">&#39;b&#39;</span><span class="o">=</span><span class="m">0</span><span class="p">,</span><span class="s">&#39;c&#39;</span><span class="o">=</span><span class="m">0</span><span class="p">,</span><span class="s">&#39;d&#39;</span><span class="o">=</span><span class="m">0</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">  <span class="n">x1</span> <span class="n">x2</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span>  <span class="m">3</span>  <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="n">b</span>  <span class="m">6</span>  <span class="m">3</span>
</span></span><span class="line"><span class="cl"><span class="n">c</span>  <span class="m">9</span>  <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="n">d</span> <span class="m">12</span> <span class="m">12</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="mapply">mapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">mapply</span><span class="p">(</span><span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">MoreArgs</span><span class="o">=</span><span class="kc">NULL</span><span class="p">,</span> <span class="n">SIMPLIFY</span><span class="o">=</span><span class="kc">TRUE</span><span class="p">,</span> <span class="n">USE.NAMES</span><span class="o">=</span><span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
FUN：要使用的函数
…: 接收多个数据(list、vector)
MoreArgs: FUN的参数列表
simplify: 若FALSE，输出list。否则，将输出的list简化为vector或matrix
USE.NAMES: 如果X为字符串，TRUE设置字符串为数据名，FALSE不设置</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">mapply</span><span class="p">(</span><span class="n">sum</span><span class="p">,</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="m">1</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="m">2</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="m">3</span><span class="p">),</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="m">10</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="m">20</span><span class="p">,</span><span class="n">d</span><span class="o">=</span><span class="m">30</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"> <span class="n">a</span>  <span class="n">b</span>  <span class="n">c</span> 
</span></span><span class="line"><span class="cl"><span class="m">11</span> <span class="m">22</span> <span class="m">33</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">a</span> <span class="o">&lt;-</span> <span class="m">1</span><span class="o">:</span><span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">b</span> <span class="o">&lt;-</span> <span class="m">5</span><span class="o">:</span><span class="m">-4</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">a</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span>  <span class="m">1</span>  <span class="m">2</span>  <span class="m">3</span>  <span class="m">4</span>  <span class="m">5</span>  <span class="m">6</span>  <span class="m">7</span>  <span class="m">8</span>  <span class="m">9</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">b</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span>  <span class="m">5</span>  <span class="m">4</span>  <span class="m">3</span>  <span class="m">2</span>  <span class="m">1</span>  <span class="m">0</span> <span class="m">-1</span> <span class="m">-2</span> <span class="m">-3</span> <span class="m">-4</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">mapply</span><span class="p">(</span><span class="n">max</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span>  <span class="m">5</span>  <span class="m">4</span>  <span class="m">3</span>  <span class="m">4</span>  <span class="m">5</span>  <span class="m">6</span>  <span class="m">7</span>  <span class="m">8</span>  <span class="m">9</span> <span class="m">10</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">mapply</span><span class="p">(</span><span class="kr">function</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">)</span> <span class="nf">c</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">y</span><span class="p">,</span> <span class="n">x^y</span><span class="p">,</span> <span class="n">x</span><span class="o">-</span><span class="n">y</span><span class="p">),</span> <span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">),</span> <span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">4</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">5</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">4</span>    <span class="m">6</span>    <span class="m">8</span>   <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">4</span>   <span class="m">27</span>  <span class="m">256</span> <span class="m">3125</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">0</span>    <span class="m">0</span>    <span class="m">0</span>    <span class="m">0</span>    <span class="m">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="eapply">eapply</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">eapply</span><span class="p">(</span><span class="n">env</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">all.names</span> <span class="o">=</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="n">USE.NAMES</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
env: 环境空间
FUN：要使用的函数
all.names: 匹配类型, ANY为所有类型
USE.NAMES: 如果X为字符串，TRUE设置字符串为数据名，FALSE不设置</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="c1"># 定义一个环境空间</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">env</span> <span class="o">&lt;-</span> <span class="nf">new.env</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="c1"># 向这个环境空间中存入3个变量</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">env</span><span class="o">$</span><span class="n">a</span> <span class="o">&lt;-</span> <span class="m">1</span><span class="o">:</span><span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">env</span><span class="o">$</span><span class="n">b</span> <span class="o">&lt;-</span> <span class="nf">exp</span><span class="p">(</span><span class="m">-3</span><span class="o">:</span><span class="m">3</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">env</span><span class="o">$</span><span class="n">logic</span> <span class="o">&lt;-</span> <span class="nf">c</span><span class="p">(</span><span class="kc">TRUE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">FALSE</span><span class="p">,</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">ls</span><span class="p">(</span><span class="n">env</span><span class="p">)</span>      <span class="c1"># 查看env空间中的变量</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="s">&#34;a&#34;</span>     <span class="s">&#34;b&#34;</span>     <span class="s">&#34;logic&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">ls.str</span><span class="p">(</span><span class="n">env</span><span class="p">)</span>  <span class="c1"># 查看env空间中的变量字符串结构</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span> <span class="o">:</span>  <span class="n">int</span> <span class="n">[1</span><span class="o">:</span><span class="m">10</span><span class="n">]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span> <span class="m">5</span> <span class="m">6</span> <span class="m">7</span> <span class="m">8</span> <span class="m">9</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="n">b</span> <span class="o">:</span>  <span class="n">num</span> <span class="n">[1</span><span class="o">:</span><span class="m">7</span><span class="n">]</span> <span class="m">0.0498</span> <span class="m">0.1353</span> <span class="m">0.3679</span> <span class="m">1</span> <span class="m">2.7183</span> <span class="kc">...</span>
</span></span><span class="line"><span class="cl"><span class="n">logic</span> <span class="o">:</span>  <span class="n">logi</span> <span class="n">[1</span><span class="o">:</span><span class="m">4</span><span class="n">]</span> <span class="kc">TRUE</span> <span class="kc">FALSE</span> <span class="kc">FALSE</span> <span class="kc">TRUE</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">eapply</span><span class="p">(</span><span class="n">env</span><span class="p">,</span> <span class="n">mean</span><span class="p">)</span>   <span class="c1"># 计算env环境空间中所有变量的均值</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">5.5</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">4.535125</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">logic</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">0.5</span>
</span></span></code></pre></td></tr></table>
</div>
</div><br>
<hr>
<h2 id="应用及拓展">应用及拓展</h2>
<h3 id="应用展示">应用展示</h3>
<p>原始数据为按年份year、地区loc和商品类别type进行统计的销售量。我们要制作两个销售总量的crosstable，一个以年份为行、地区为列，一个以年份为行，类别为列。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">df</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="nf">kronecker</span><span class="p">(</span><span class="m">2001</span><span class="o">:</span><span class="m">2003</span><span class="p">,</span> <span class="nf">rep</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="m">4</span><span class="p">)),</span> 
</span></span><span class="line"><span class="cl">                 <span class="n">loc</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s">&#39;beijing&#39;</span><span class="p">,</span><span class="s">&#39;beijing&#39;</span><span class="p">,</span><span class="s">&#39;shanghai&#39;</span><span class="p">,</span><span class="s">&#39;shanghai&#39;</span><span class="p">),</span> 
</span></span><span class="line"><span class="cl">                 <span class="n">type</span><span class="o">=</span><span class="nf">rep</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="s">&#39;A&#39;</span><span class="p">,</span><span class="s">&#39;B&#39;</span><span class="p">),</span><span class="m">6</span><span class="p">),</span> <span class="n">sale</span><span class="o">=</span><span class="nf">rep</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">12</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">df</span>
</span></span><span class="line"><span class="cl">   <span class="n">year</span>      <span class="n">loc</span> <span class="n">type</span> <span class="n">sale</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>  <span class="m">2001</span>  <span class="n">beijing</span>    <span class="n">A</span>    <span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span>  <span class="m">2001</span>  <span class="n">beijing</span>    <span class="n">B</span>    <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span>  <span class="m">2001</span> <span class="n">shanghai</span>    <span class="n">A</span>    <span class="m">3</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span>  <span class="m">2001</span> <span class="n">shanghai</span>    <span class="n">B</span>    <span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="m">5</span>  <span class="m">2002</span>  <span class="n">beijing</span>    <span class="n">A</span>    <span class="m">5</span>
</span></span><span class="line"><span class="cl"><span class="m">6</span>  <span class="m">2002</span>  <span class="n">beijing</span>    <span class="n">B</span>    <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="m">7</span>  <span class="m">2002</span> <span class="n">shanghai</span>    <span class="n">A</span>    <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="m">8</span>  <span class="m">2002</span> <span class="n">shanghai</span>    <span class="n">B</span>    <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="m">9</span>  <span class="m">2003</span>  <span class="n">beijing</span>    <span class="n">A</span>    <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="m">10</span> <span class="m">2003</span>  <span class="n">beijing</span>    <span class="n">B</span>   <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="m">11</span> <span class="m">2003</span> <span class="n">shanghai</span>    <span class="n">A</span>   <span class="m">11</span>
</span></span><span class="line"><span class="cl"><span class="m">12</span> <span class="m">2003</span> <span class="n">shanghai</span>    <span class="n">B</span>   <span class="m">12</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">tapply</span><span class="p">(</span><span class="n">df</span><span class="o">$</span><span class="n">sale</span><span class="p">,</span> <span class="n">df[</span><span class="p">,</span><span class="nf">c</span><span class="p">(</span><span class="s">&#39;year&#39;</span><span class="p">,</span><span class="s">&#39;loc&#39;</span><span class="p">)</span><span class="n">]</span><span class="p">,</span> <span class="n">sum</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="n">loc</span>
</span></span><span class="line"><span class="cl"><span class="n">year</span>   <span class="n">beijing</span> <span class="n">shanghai</span>
</span></span><span class="line"><span class="cl">  <span class="m">2001</span>       <span class="m">3</span>        <span class="m">7</span>
</span></span><span class="line"><span class="cl">  <span class="m">2002</span>      <span class="m">11</span>       <span class="m">15</span>
</span></span><span class="line"><span class="cl">  <span class="m">2003</span>      <span class="m">19</span>       <span class="m">23</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">tapply</span><span class="p">(</span><span class="n">df</span><span class="o">$</span><span class="n">sale</span><span class="p">,</span> <span class="n">df[</span><span class="p">,</span><span class="nf">c</span><span class="p">(</span><span class="s">&#39;year&#39;</span><span class="p">,</span><span class="s">&#39;type&#39;</span><span class="p">)</span><span class="n">]</span><span class="p">,</span> <span class="n">sum</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="n">type</span>
</span></span><span class="line"><span class="cl"><span class="n">year</span>    <span class="n">A</span>  <span class="n">B</span>
</span></span><span class="line"><span class="cl">  <span class="m">2001</span>  <span class="m">4</span>  <span class="m">6</span>
</span></span><span class="line"><span class="cl">  <span class="m">2002</span> <span class="m">12</span> <span class="m">14</span>
</span></span><span class="line"><span class="cl">  <span class="m">2003</span> <span class="m">20</span> <span class="m">22</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">list1</span> <span class="o">&lt;-</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="nf">list</span><span class="p">(</span><span class="n">c</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">4</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="m">5</span><span class="o">:</span><span class="m">9</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">list1</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span> <span class="m">5</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">c</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">d</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">5</span> <span class="m">6</span> <span class="m">7</span> <span class="m">8</span> <span class="m">9</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">list2</span> <span class="o">&lt;-</span> <span class="nf">list</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="nf">list</span><span class="p">(</span><span class="n">c</span><span class="o">=</span><span class="m">5</span><span class="o">:</span><span class="m">8</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">list2</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span> <span class="m">5</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">c</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">5</span> <span class="m">6</span> <span class="m">7</span> <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">d</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span> <span class="m">5</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="s">&#34;%+%&#34;</span> <span class="o">&lt;-</span> <span class="kr">function</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">)</span> <span class="nf">mapply</span><span class="p">(</span><span class="s">&#34;+&#34;</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">mapply</span><span class="p">(</span><span class="s">&#34;%+%&#34;</span><span class="p">,</span> <span class="n">list1</span><span class="p">,</span> <span class="n">list2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span>  <span class="m">2</span>  <span class="m">4</span>  <span class="m">6</span>  <span class="m">8</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">c</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span>  <span class="m">6</span>  <span class="m">8</span> <span class="m">10</span> <span class="m">12</span>
</span></span><span class="line"><span class="cl"><span class="o">$</span><span class="n">b</span><span class="o">$</span><span class="n">d</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span>  <span class="m">6</span>  <span class="m">8</span> <span class="m">10</span> <span class="m">12</span> <span class="m">14</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h3 id="相关函数">相关函数</h3>
<h4 id="by">by</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">by</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">INDICES</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">,</span> <span class="n">simplify</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
data: 数据框
INDICES：与数据框行数等长的用于分组的索引
FUN：要使用的函数</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">5</span><span class="p">),</span> <span class="n">b</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">6</span><span class="o">:</span><span class="m">10</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span>
</span></span><span class="line"><span class="cl">  <span class="n">a</span>  <span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span> <span class="m">1</span>  <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span> <span class="m">2</span>  <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span> <span class="m">3</span>  <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span> <span class="m">4</span>  <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="m">5</span> <span class="m">5</span> <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">INDICES</span> <span class="o">&lt;-</span> <span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="m">1</span><span class="p">,</span><span class="m">2</span><span class="p">,</span><span class="m">2</span><span class="p">,</span><span class="m">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">by</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">INDICES</span><span class="p">,</span> <span class="n">colMeans</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">INDICES</span><span class="o">:</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">  <span class="n">a</span>   <span class="n">b</span> 
</span></span><span class="line"><span class="cl"><span class="m">1.5</span> <span class="m">6.5</span> 
</span></span><span class="line"><span class="cl"><span class="o">-------------------------------------------------------------------------------</span>
</span></span><span class="line"><span class="cl"><span class="n">INDICES</span><span class="o">:</span> <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span> <span class="n">b</span> 
</span></span><span class="line"><span class="cl"><span class="m">4</span> <span class="m">9</span> 
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">by</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">INDICES</span><span class="p">,</span> <span class="n">rowMeans</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">INDICES</span><span class="o">:</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">  <span class="m">1</span>   <span class="m">2</span> 
</span></span><span class="line"><span class="cl"><span class="m">3.5</span> <span class="m">4.5</span> 
</span></span><span class="line"><span class="cl"><span class="o">-------------------------------------------------------------------------------</span>
</span></span><span class="line"><span class="cl"><span class="n">INDICES</span><span class="o">:</span> <span class="m">2</span>
</span></span><span class="line"><span class="cl">  <span class="m">3</span>   <span class="m">4</span>   <span class="m">5</span> 
</span></span><span class="line"><span class="cl"><span class="m">5.5</span> <span class="m">6.5</span> <span class="m">7.5</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="outer">outer</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">outer</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">FUN</span> <span class="o">=</span> <span class="s">&#34;*&#34;</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
X、Y: 向量、数组
FUN：当为空时即为外积运算，否则为将FUN代替外积运算符进行类似外积的运算操作</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">x</span> <span class="o">&lt;-</span> <span class="m">1</span><span class="o">:</span><span class="m">4</span><span class="p">;</span> <span class="n">y</span> <span class="o">&lt;-</span> <span class="m">2</span><span class="o">:</span><span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">x</span><span class="p">;</span> <span class="n">y</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="n">[1]</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">outer</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">3</span>    <span class="m">4</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">4</span>    <span class="m">6</span>    <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">6</span>    <span class="m">9</span>   <span class="m">12</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span>    <span class="m">8</span>   <span class="m">12</span>   <span class="m">16</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">month.abb</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span> <span class="s">&#34;Jan&#34;</span> <span class="s">&#34;Feb&#34;</span> <span class="s">&#34;Mar&#34;</span> <span class="s">&#34;Apr&#34;</span> <span class="s">&#34;May&#34;</span> <span class="s">&#34;Jun&#34;</span> <span class="s">&#34;Jul&#34;</span> <span class="s">&#34;Aug&#34;</span> <span class="s">&#34;Sep&#34;</span> <span class="s">&#34;Oct&#34;</span> <span class="s">&#34;Nov&#34;</span> <span class="s">&#34;Dec&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">outer</span><span class="p">(</span><span class="n">month.abb</span><span class="p">,</span> <span class="m">1999</span><span class="o">:</span><span class="m">2003</span><span class="p">,</span> <span class="n">FUN</span> <span class="o">=</span> <span class="s">&#34;paste&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span>       <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span>       <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>       <span class="n">[</span><span class="p">,</span><span class="m">4</span><span class="n">]</span>       <span class="n">[</span><span class="p">,</span><span class="m">5</span><span class="n">]</span>      
</span></span><span class="line"><span class="cl"> <span class="n">[1</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Jan 1999&#34;</span> <span class="s">&#34;Jan 2000&#34;</span> <span class="s">&#34;Jan 2001&#34;</span> <span class="s">&#34;Jan 2002&#34;</span> <span class="s">&#34;Jan 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[2</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Feb 1999&#34;</span> <span class="s">&#34;Feb 2000&#34;</span> <span class="s">&#34;Feb 2001&#34;</span> <span class="s">&#34;Feb 2002&#34;</span> <span class="s">&#34;Feb 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[3</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Mar 1999&#34;</span> <span class="s">&#34;Mar 2000&#34;</span> <span class="s">&#34;Mar 2001&#34;</span> <span class="s">&#34;Mar 2002&#34;</span> <span class="s">&#34;Mar 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[4</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Apr 1999&#34;</span> <span class="s">&#34;Apr 2000&#34;</span> <span class="s">&#34;Apr 2001&#34;</span> <span class="s">&#34;Apr 2002&#34;</span> <span class="s">&#34;Apr 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[5</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;May 1999&#34;</span> <span class="s">&#34;May 2000&#34;</span> <span class="s">&#34;May 2001&#34;</span> <span class="s">&#34;May 2002&#34;</span> <span class="s">&#34;May 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[6</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Jun 1999&#34;</span> <span class="s">&#34;Jun 2000&#34;</span> <span class="s">&#34;Jun 2001&#34;</span> <span class="s">&#34;Jun 2002&#34;</span> <span class="s">&#34;Jun 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[7</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Jul 1999&#34;</span> <span class="s">&#34;Jul 2000&#34;</span> <span class="s">&#34;Jul 2001&#34;</span> <span class="s">&#34;Jul 2002&#34;</span> <span class="s">&#34;Jul 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[8</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Aug 1999&#34;</span> <span class="s">&#34;Aug 2000&#34;</span> <span class="s">&#34;Aug 2001&#34;</span> <span class="s">&#34;Aug 2002&#34;</span> <span class="s">&#34;Aug 2003&#34;</span>
</span></span><span class="line"><span class="cl"> <span class="n">[9</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Sep 1999&#34;</span> <span class="s">&#34;Sep 2000&#34;</span> <span class="s">&#34;Sep 2001&#34;</span> <span class="s">&#34;Sep 2002&#34;</span> <span class="s">&#34;Sep 2003&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">[10</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Oct 1999&#34;</span> <span class="s">&#34;Oct 2000&#34;</span> <span class="s">&#34;Oct 2001&#34;</span> <span class="s">&#34;Oct 2002&#34;</span> <span class="s">&#34;Oct 2003&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">[11</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Nov 1999&#34;</span> <span class="s">&#34;Nov 2000&#34;</span> <span class="s">&#34;Nov 2001&#34;</span> <span class="s">&#34;Nov 2002&#34;</span> <span class="s">&#34;Nov 2003&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">[12</span><span class="p">,</span><span class="n">]</span> <span class="s">&#34;Dec 1999&#34;</span> <span class="s">&#34;Dec 2000&#34;</span> <span class="s">&#34;Dec 2001&#34;</span> <span class="s">&#34;Dec 2002&#34;</span> <span class="s">&#34;Dec 2003&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h4 id="sweep">sweep</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">sweep</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">MARGIN</span><span class="p">,</span> <span class="n">STATS</span><span class="p">,</span> <span class="n">FUN</span> <span class="o">=</span> <span class="s">&#34;-&#34;</span><span class="p">,</span> <span class="n">check.margin</span> <span class="o">=</span> <span class="kc">TRUE</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
x: 数组、矩阵
MARGIN：运算维度，1表示行，2表示列，3即第三维度，以此类推
STATS：运算参数，类似于减法中的减数，除法中的除数
FUN：要使用的函数</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">mat</span> <span class="o">&lt;-</span> <span class="nf">matrix</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">9</span><span class="p">,</span> <span class="m">3</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">mat</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">4</span>    <span class="m">7</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">5</span>    <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">3</span>    <span class="m">6</span>    <span class="m">9</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sweep</span><span class="p">(</span><span class="n">mat</span><span class="p">,</span> <span class="m">1</span><span class="p">,</span> <span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="m">4</span><span class="p">,</span><span class="m">7</span><span class="p">),</span> <span class="s">&#34;+&#34;</span><span class="p">)</span>  <span class="c1"># 第一行都加1，第二行都加4，第三行都加7</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">5</span>    <span class="m">8</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">6</span>    <span class="m">9</span>   <span class="m">12</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>   <span class="m">10</span>   <span class="m">13</span>   <span class="m">16</span>
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">A</span> <span class="o">&lt;-</span> <span class="nf">array</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">24</span><span class="p">,</span> <span class="n">dim</span> <span class="o">=</span> <span class="m">4</span><span class="o">:</span><span class="m">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">median</span> <span class="o">&lt;-</span> <span class="nf">apply</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="m">1</span><span class="o">:</span><span class="m">2</span><span class="p">,</span> <span class="n">median</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">A</span>
</span></span><span class="line"><span class="cl"><span class="p">,</span> <span class="p">,</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">1</span>    <span class="m">5</span>    <span class="m">9</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">2</span>    <span class="m">6</span>   <span class="m">10</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">3</span>    <span class="m">7</span>   <span class="m">11</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span>    <span class="m">4</span>    <span class="m">8</span>   <span class="m">12</span>
</span></span><span class="line"><span class="cl"><span class="p">,</span> <span class="p">,</span> <span class="m">2</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>   <span class="m">13</span>   <span class="m">17</span>   <span class="m">21</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>   <span class="m">14</span>   <span class="m">18</span>   <span class="m">22</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>   <span class="m">15</span>   <span class="m">19</span>   <span class="m">23</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span>   <span class="m">16</span>   <span class="m">20</span>   <span class="m">24</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">median</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">7</span>   <span class="m">11</span>   <span class="m">15</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">8</span>   <span class="m">12</span>   <span class="m">16</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">9</span>   <span class="m">13</span>   <span class="m">17</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span>   <span class="m">10</span>   <span class="m">14</span>   <span class="m">18</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">sweep</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="m">1</span><span class="o">:</span><span class="m">2</span><span class="p">,</span> <span class="n">median</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">,</span> <span class="p">,</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>   <span class="m">-6</span>   <span class="m">-6</span>   <span class="m">-6</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>   <span class="m">-6</span>   <span class="m">-6</span>   <span class="m">-6</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>   <span class="m">-6</span>   <span class="m">-6</span>   <span class="m">-6</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span>   <span class="m">-6</span>   <span class="m">-6</span>   <span class="m">-6</span>
</span></span><span class="line"><span class="cl"><span class="p">,</span> <span class="p">,</span> <span class="m">2</span>
</span></span><span class="line"><span class="cl">     <span class="n">[</span><span class="p">,</span><span class="m">1</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">2</span><span class="n">]</span> <span class="n">[</span><span class="p">,</span><span class="m">3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">[1</span><span class="p">,</span><span class="n">]</span>    <span class="m">6</span>    <span class="m">6</span>    <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="n">[2</span><span class="p">,</span><span class="n">]</span>    <span class="m">6</span>    <span class="m">6</span>    <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="n">[3</span><span class="p">,</span><span class="n">]</span>    <span class="m">6</span>    <span class="m">6</span>    <span class="m">6</span>
</span></span><span class="line"><span class="cl"><span class="n">[4</span><span class="p">,</span><span class="n">]</span>    <span class="m">6</span>    <span class="m">6</span>    <span class="m">6</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h4 id="replicate">replicate</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">replicate</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">expr</span><span class="p">,</span> <span class="n">simplify</span> <span class="o">=</span> <span class="s">&#34;array&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
n: 调用的次数
expr：调用的表达式</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">game</span> <span class="o">&lt;-</span> <span class="kr">function</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="n">n</span> <span class="o">&lt;-</span> <span class="nf">sample</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">6</span><span class="p">,</span><span class="m">2</span><span class="p">,</span><span class="n">replace</span><span class="o">=</span><span class="bp">T</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>   <span class="kr">return</span><span class="p">(</span><span class="nf">sum</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">replicate</span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="m">10</span><span class="p">,</span> <span class="nf">game</span><span class="p">())</span>
</span></span><span class="line"><span class="cl"> <span class="n">[1]</span>  <span class="m">6</span>  <span class="m">6</span>  <span class="m">6</span>  <span class="m">7</span>  <span class="m">7</span>  <span class="m">7</span> <span class="m">11</span>  <span class="m">8</span>  <span class="m">7</span>  <span class="m">9</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h4 id="aggregate">aggregate</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="nf">aggregate</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">by</span><span class="p">,</span> <span class="n">FUN</span><span class="p">,</span> <span class="kc">...</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p><strong>参数列表：</strong>
x: 一种R数据结构，通常为数据框
by：分组索引，必须为list格式
FUN：要使用的函数</p>
</blockquote>
<p>{% label info@<b>举例阐释</b> %}</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-r" data-lang="r"><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span> <span class="o">&lt;-</span> <span class="nf">data.frame</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s">&#34;张三&#34;</span><span class="p">,</span><span class="s">&#34;李四&#34;</span><span class="p">,</span><span class="s">&#34;王五&#34;</span><span class="p">,</span><span class="s">&#34;赵六&#34;</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>              <span class="n">sex</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s">&#34;M&#34;</span><span class="p">,</span><span class="s">&#34;M&#34;</span><span class="p">,</span><span class="s">&#34;F&#34;</span><span class="p">,</span><span class="s">&#34;F&#34;</span><span class="p">),</span> <span class="n">age</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">20</span><span class="p">,</span><span class="m">40</span><span class="p">,</span><span class="m">22</span><span class="p">,</span><span class="m">30</span><span class="p">),</span>
</span></span><span class="line"><span class="cl"><span class="o">+</span>              <span class="n">height</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">166</span><span class="p">,</span><span class="m">170</span><span class="p">,</span><span class="m">150</span><span class="p">,</span><span class="m">155</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="n">data</span>
</span></span><span class="line"><span class="cl">  <span class="n">name</span> <span class="n">sex</span> <span class="n">age</span> <span class="n">height</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span> 张三   <span class="n">M</span>  <span class="m">20</span>    <span class="m">166</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span> 李四   <span class="n">M</span>  <span class="m">40</span>    <span class="m">170</span>
</span></span><span class="line"><span class="cl"><span class="m">3</span> 王五   <span class="bp">F</span>  <span class="m">22</span>    <span class="m">150</span>
</span></span><span class="line"><span class="cl"><span class="m">4</span> 赵六   <span class="bp">F</span>  <span class="m">30</span>    <span class="m">155</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;</span> <span class="nf">aggregate</span><span class="p">(</span><span class="n">data[</span><span class="p">,</span><span class="m">3</span><span class="o">:</span><span class="m">4</span><span class="n">]</span><span class="p">,</span> <span class="n">by</span><span class="o">=</span><span class="nf">list</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">sex</span><span class="p">),</span> <span class="n">mean</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">  <span class="n">Group.1</span> <span class="n">age</span> <span class="n">height</span>
</span></span><span class="line"><span class="cl"><span class="m">1</span>       <span class="bp">F</span>  <span class="m">26</span>  <span class="m">152.5</span>
</span></span><span class="line"><span class="cl"><span class="m">2</span>       <span class="n">M</span>  <span class="m">30</span>  <span class="m">168.0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><br>
<hr>
<h2 id="致谢">致谢</h2>
<blockquote>
<h3 id="参考文章">参考文章</h3>
<ul>
<li><a href="https://www.cnblogs.com/aquastone/p/r-apply.html" target="_blank" rel="noopener noreffer">R语言apply函数族笔记</a></li>
<li><a href="http://blog.fens.me/r-apply/" target="_blank" rel="noopener noreffer">掌握R语言中的apply函数族</a></li>
<li><a href="https://feng.li/" target="_blank" rel="noopener noreffer">Dr. Feng Li-Personal Site</a></li>
</ul>
</blockquote>
]]></content:encoded></item></channel></rss>