【问题标题】:Collapsing / hiding figures in R markdown在 R markdown 中折叠/隐藏数字
【发布时间】:2017-03-06 16:07:15
【问题描述】:

在我的 rmarkdown 文档中,我可以显示和隐藏以下代码 - 在每个代码块之前的文档右侧创建一个方便的按钮:

output: 
  html_document:
    code_folding: hide

有没有类似的方便的方法来隐藏表格或图形?如果是这样,请提供参考,因为我找不到任何参考。否则将不胜感激,谢谢!

【问题讨论】:

  • 您感兴趣的不是 results="hide" 吗? kbroman.org/knitr_knutshell/pages/Rmarkdown.html
  • 是的,但是如果您想查看结果,则没有方便的方法来“显示”结果。 Results = "hide" 永久隐藏它们。我对上述按钮解决方案感兴趣

标签: r r-markdown


【解决方案1】:

我无法让上述解决方案(或我发现的其他解决方案)始终如一地工作,但使用我在 W3schools.com 找到的内联 html(引导示例/解决方案)在 Rmarkdown 中效果很好。

在下面的示例中,我使用它在 html 输出中显示一个简单的绘图。它应该适用于任何块输出:

<button class="btn btn-primary" data-toggle="collapse" data-target="#BlockName"> Show/Hide </button>  
<div id="BlockName" class="collapse">  

```{r}
plot(mtcars$disp, mtcars$mpg)
```

</div>

注意:如果您在多个部分上使用它,每个部分都需要一个唯一的 ID(即,将 BlockName 替换为每个要折叠的部分的唯一 ID。)

【讨论】:

  • 目前尚不清楚您的示例中的哪个部分用于隐藏块以及您的会话信息代码。我认为按钮和 div 组件是需要的,但没有成功。您的 r 代码块中是否有任何内容需要使这项工作?
  • 我将它编辑到最低限度,这样它就不会依赖任何额外的包,上面。看看这是否有效。
  • 如果你想要更好的sessionInfo,我最近发现Hmisc 包中的函数很有帮助。现在我使用:Hmisc::markupSpecs$html$session()
  • 我还更改为包含一个情节 - 与原始问题有关,尽管我认为这应该适用于任何输出。
  • 这很棒。不过,我似乎无法在稍后的文档中获得第二个切换按钮来处理另一个块。出现第二个切换按钮,但是当我单击它时,只打开第一个按钮的代码,有什么想法吗?
【解决方案2】:

如果您将此添加到 .Rmd 文件的末尾

<script>
$( "input.hideshow" ).each( function ( index, button ) {
  button.value = 'Hide Output';
  $( button ).click( function () {
    var target = this.nextSibling ? this : this.parentNode;
    target = target.nextSibling.nextSibling.nextSibling.nextSibling;
    if ( target.style.display == 'block' || target.style.display == '' ) {
      target.style.display = 'none';
      this.value = 'Show Output';
    } else {
      target.style.display = 'block';
      this.value = 'Hide Output';
    }
  } );
} );
</script>

然后在你想要切换的每个块之前:

<input type=button class=hideshow></input>

(改编自这里:https://groups.google.com/forum/#!topic/knitr/d37E0mP3w6k

注意:如果您显示代码,这将起作用 - 如果您隐藏代码(使用echo = FALSE),请更改

target = target.nextSibling.nextSibling.nextSibling.nextSibling;

target = target.nextSibling.nextSibling;

注意2:如果你想使用code_folding选项,改变

 target = target.nextSibling.nextSibling.nextSibling.nextSibling;

 target = target.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling;

【讨论】:

  • 谢谢,它不能与code_folding 一起使用有什么原因吗?
  • 这有点老套,但我已经更新了它应该适用于code_folding - 基本上,添加切换会添加另一个需要跳过的节点,所以你需要一个额外的@ 987654333@ 在脚本中。
  • 这太好了,谢谢!您知道我如何将其默认隐藏,以便用户可以单击“显示输出”按钮而不是遇到需要隐藏的大表?超级有用的功能,我希望看到添加到 KnitR 等中。
  • @Lucy 你知道我可以通过单击一个按钮隐藏多个连续的图像吗?
  • 对于@lukeholman 提到的默认隐藏行为,请参阅 gclarkjr5 留下的答案,这对我有用
【解决方案3】:

我能够让 Lucy 的代码为我工作,但我也认为默认隐藏输出会更有用和更简洁。这是一个非常简单的添加。只需执行在渲染时单击所有“隐藏输出”按钮的 jquery。我的代码如下所示:

<script>
$( "input.hideshow" ).each( function ( index, button ) {
  button.value = 'Hide Output';
  $( button ).click( function () {
    var target = this.nextSibling ? this : this.parentNode;
    target = target.nextSibling.nextSibling;
    if ( target.style.display == 'block' || target.style.display == '' ) {
      target.style.display = 'none';
      this.value = 'Show Output';
    } else {
      target.style.display = 'block';
      this.value = 'Hide Output';
    }
  } );
} );

$("input.hideshow").click()
</script>

只有&lt;/script&gt; 之前的最后一行是加法。

【讨论】:

    【解决方案4】:

    嘿,所以我更改了 gclarkjr5 的代码以显示表格而不进行格式化。 它将首先显示隐藏的按钮,并且不会修改表格的显示。 所以这里是:

    把它放在你要显示的块之前:

    <input type=button class=hideshow></input>
    

    然后在你的降价文件末尾:

    <script>
    $( "input.hideshow" ).each( function ( index, button ) {
      button.value = 'Show Output';
      $( button ).click( function () {
        var target = this.nextSibling ? this : this.parentNode;
        target = target.nextSibling.nextSibling;
        if ( target.style.display == 'none') {
          target.style.display = '';
          this.value = 'Hide Output';
        } else {
          target.style.display = 'none';
          this.value = 'Show Output';
        }
      } );
    } );
    
    $("input.hideshow").click()
    </script>
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2013-01-01
      • 2019-05-19
      • 1970-01-01
      • 2012-06-09
      • 2013-09-10
      相关资源
      最近更新 更多