在 Rmarkdown 中创建动态选项卡

2024-04-06

在 Rmarkdown 中,可以创建选项卡,例如:

---
output: html_document
---

# Tabs {.tabset}

## Tab 1

foo

## Tab 2

bar

我想知道是否可以创建任意数量的标签?如何以编程方式创建选项卡?

以下代码是执行此操作的一个糟糕尝试,但它会生成标题而不是选项卡。

---
output: html_document
---

# Tabs {.tabset}

```{r echo=FALSE}
shiny::tags$h2("Tab 1")
```

foo

## Tab 2

bar

Solution

感谢@GGamba 提供了一个很好的解决方案。我需要更进一步,能够添加选项卡作为循环的一部分,因此我需要进行两项更改。首先,我使用这段代码动态添加选项卡(这里唯一的区别是我强制评估hrefCode在超时内,否则所有一起调用的超时将使用相同的值)

(function(hrefCode){setTimeout(function(){
 var tabContent = document.createElement('div');
 var tabContainerTarget = document.getElementsByClassName('tab-content')[0];

   tabContent.setAttribute('id', 'tab-' + hrefCode);
   tabContent.setAttribute('class', 'tab-pane')
   tabContent.innerHTML = '", gsub('\n', '', Panel, fixed = TRUE), "';

   tabContainerTarget.appendChild(tabContent);
   }, 100);
})(hrefCode);

其次,要在循环中添加选项卡,您可以执行以下操作:

tabsToAdd <- list("tab3" = "hello", "tab4" = "world")

shiny::tagList(lapply(names(tabsToAdd), function(x) {
  addToTabset(title = x, tabsetId = 'tbSet1',
              tabPanel(x, tabsToAdd[[x]]))
}))

对于这个问题还有一个简单的 rmarkdown 解决方案,不需要闪亮的和/或自定义的 JavaScript。不适用于所有类型的 R 输出(见下文):

## Tabbed Example {.tabset}

```{r, results = 'asis'}
for (nm in unique(iris$Species)){
  cat("### ", nm, "\n")
  cat(knitr::knit_print(plot(iris[iris$Species == nm, ])))
  cat("\n")
}
```

一种更复杂的方法,首先创建一个原始 Rmarkdown 代码列表作为字符向量列表,然后在单独的(内联)代码块中使用knitr::knit()。这适用于所有类型的输出,而不仅仅是基本图。

## Tabbed Example ggplot {.tabset}

```{r}
library(ggplot2)

template <- c(
    "### {{nm}}\n",
    "```{r, echo = FALSE}\n",
    "ggplot(iris[iris$Species == '{{nm}}', ], aes(x = Sepal.Length, y = Sepal.Width)) + geom_point()\n",
    "```\n",
    "\n"
  )

plots <- lapply(
  unique(iris$Species), 
  function(nm) knitr::knit_expand(text = template)
)
```

`r knitr::knit(text = unlist(plots))`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rmarkdown 中创建动态选项卡 的相关文章

  • 如何在 Shiny 中动态渲染的 textInput 添加样式元素

    你好堆栈溢出 在我最近提出的问题中 我已经解决了一些与动态渲染 UI 元素相关的主要问题 并在一些了不起的人的帮助下动态创建了观察者 参见此处 动态渲染的 UI 如何在第二次运行时删除旧的反应变量 https stackoverflow c
  • 使用亚毫秒日期时间从字符->POSIXct->字符准确转换

    我的文件中有一个字符日期时间列 我加载文件 到data table 并执行需要将列转换为的操作POSIXct 然后我需要写POSIXct值返回文件 但日期时间不会相同 因为打印不正确 这个打印 格式问题是众所周知的 并且已经被讨论过多次 我
  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • 如何在 R 中查找平衡面板数据(又名,如何查找面板中的哪些条目在给定窗口内完整)

    我有来自 Compustat 的大量数据 我向其中添加了一些手工收集的数据 认真地从一堆旧书中手工收集 但我不想手工收集整个面板 只想随机选择一个子集 为了找到更大的集合 我从中随机选择 我想从 Compustat 的平衡面板开始 我看到p
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • 通过 r 中的组变量进行汇总

    我有一个数据框如下 head newStormObject FATALITIES INJURIES PROPVALDMG CROPVALDMG EVTYPE total 1 0 15 2 5e 05 0 TORNADO 15 2 0 0 2
  • R Shiny - 使用 DataTable 移动列名称

    我有一个非常复杂的闪亮代码 其中有几个面板和这些面板内的几个表格 启动应用程序时 列名称与列值正确对齐 但是 一旦我更改应用程序表格下的页码 列名称就会移动到左侧 而值仍保留在中间 如何强制应用程序使列名称与列值对齐 一个可重现的例子 li
  • R -> kdb:将 R 数据作为二进制对象传递给 kdb+

    最有效的插入方式是什么R对象 更具体地说 时间序列表示为xts or data table对象 即基于时间和数字的列 到kdb 数据库 我能够通过以下方式找到唯一涉及字符串序列化的解决方案q所描述的表达式here https stackov
  • 将数据框分成相等的部分

    我有一个示例数据框 df lt data frame x 1 112 y runif 112 有没有办法打印数据框列表 其中列表的第一部分包含行1 10 第二11 20等等 直到最后 111 112 你可以使用split with rep
  • 在构建分数多项式函数时避免 eval(parse())

    我的目标是在 R 中编写一个函数 它接受 a 的系数分数多项式 http www stata com manuals13 rfp pdf rfpRemarksandexamples FP 并返回一个向量化函数 该函数针对给定的输入数字计算指
  • R 中的线性模型 - 乘法表达式

    我有 3 个数值变量A B and C 我正在尝试创建一个能够预测的线性模型A 我使用的表达式是B C为了预测A 然而 当查看输出时 我无法得到我的方程 因为我得到了额外的变量 但我不知道它是什么 这是我的代码 MyData lt read
  • 基于列名称的字符向量的子数据框[重复]

    这个问题在这里已经有答案了 菜鸟问题 提前感谢您的耐心 我有一个数据框 vals lt c 1 1 1 1 testdf lt data frame var1 vals var2 vals var3 vals 我有一个变量名称的字符向量 v
  • ggarrange:合并多个图

    附图来自以下文章 正在使用 ggarrange 合并这些图 http www sthda com english articles 24 ggpubr publication ready plots 81 ggplot2 easy way
  • 在 r 中的字符串内循环以输出具有向量化值的表达式

    示例数据 gt DF A B C 1 11 22 88 2 11 22 47 3 2 30 21 4 3 30 21 gt r 1 A A i B B i A A i C C i 3 B B i C C i A A i B B i C C
  • 根据特定行中的值对列重新排序。

    我在数据框中有以下数据 aa bb cc 1 3 4 5 2 5 4 3 3 7 8 6 100 33 63 55 我需要根据最后一行中的值对列重新排序 这种转变的结果将是 bb cc aa 1 4 5 3 2 4 3 5 3 8 6 7
  • 在 Rlattice xyplot 上分别控制轴刻度和轴线

    我怎样才能去除周围的盒子xyplot 同时保留轴刻度刻度线 本着爱德华 塔夫特 Edward Tufte 极简主义数据图形美学的精神 这些轴线是 非数据墨水 并且可以 应该 被 擦除 library lattice my df lt dat
  • 如何在 R 中“推断”面板数据的值?

    我有一个带有 NA 值的面板数据 如下所示 uid year month day value 1 1 2016 8 1 NA 2 1 2016 8 2 NA 3 1 2016 8 3 30 4 1 2016 8 4 NA 5 1 2016
  • 安装 gplots 时出错

    我正在 OSX v 10 9 2 上运行 R v 3 0 3 当尝试使用以下命令在 R studio 中安装 gplots 包时 出现错误 gt library gplots Error in library gplots there is

随机推荐