小编Rob*_*eel的帖子

如何将带有参数的子文档编织到主 RMarkdown 文档中?

我有一个参数化的 RMarkdown 文件,parameterized.Rmd包含以下内容。

---
title: "Parameterized report"
output: html_document
params:
  input_df: NULL
---
```{r sec1}
head(params$input_df[, 1:2])
```
Run Code Online (Sandbox Code Playgroud)

我可以使用 来从控制台编织它rmarkdown::render,为不同的数据帧输入生成不同的文档。这按预期工作。

rmarkdown::render("parameterized.Rmd", 
                params = list(input_df = mtcars), 
                output_file = "cars.html")

rmarkdown::render("parameterized.Rmd", 
                  params = list(input_df = iris), 
                  output_file = "iris.html")
Run Code Online (Sandbox Code Playgroud)

我希望将每个结果都作为通用文档的子文档。我的第一次尝试是 with knitr::knit_child,但它不params作为参数。所以这次失败了。

---
title: "Main report"
output: html_document
---


```{r test-cars}
knitr::knit_child("parameterized.Rmd", envir = environment(), quiet = T,
                  params = list(input_df = mtcars))
```
Run Code Online (Sandbox Code Playgroud)

如何将需要参数的子文档组合在一起?

parameter-passing knitr r-markdown

10
推荐指数
1
解决办法
2207
查看次数

如何在没有 Shiny 的情况下过滤 Rmarkdown 中的预聚合数据?

原始问题

(请参阅下面的部分解决方案更新。)

我有一个 RMarkdown 文档,它按组总结了有多少记录(行)具有各种属性。我希望能够通过在汇总之前进行过滤来操作表中包含哪些记录。我在下面创建了一个最小但类似的模型。

我想要的是一个交互式复选框,可以有效地“注释或取消注释”

  # filter(weight_class == "Heavy") %>% 
Run Code Online (Sandbox Code Playgroud)

以下。

我知道我可以使用 Shiny 做到这一点,但我需要能够直接与同事共享生成的 HTML 文件(在我的情况下通过共享 Box 文件夹),因此 Shiny 解决方案不可行,至少目前是这样。DT另外,我考虑过使用/的功能datatable,但据我所知,过滤需要在它到达那里之前发生(尽管我愿意被证明我对此是错误的)。

我见过像htmltools、 、之类的包htmlwidgetscrosstalk它们似乎可以促进这一点,但我对它们还不够熟悉,并且似乎无法在网上找到足够接近的示例来根据我的目的进行修改。

实际上,我希望能够过滤多个条件,并希望从过滤后的数据生成多个表格和绘图,但我希望下面的最小示例可以作为一个可行的起点。

我如何添加这样的复选框(或类似的)来创建这种类型的交互性,而不需要求助于 Shiny?

演示 RMarkdown:

---
title: "Table Demo"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)
library(DT)
```

```{r data}
set.seed(42)
df <- tibble(
  group = sample(paste0("Group ", LETTERS[1:4]), 100, replace = T),
  weight_class = sample(c("Heavy", "Light"), 100, replace = T, prob = c(.3, …
Run Code Online (Sandbox Code Playgroud)

r r-markdown crosstalk reactable

6
推荐指数
1
解决办法
1241
查看次数

按组对子组进行排名 (dplyr)

此问题解决如何分配组内行的排名。我想将子组的排名分配给该子组中的一行。我真正想说的是,我需要group_by保证唯一的第二个变量的缩写,这是我能想到的最好的方法。希望下面所需的输出使这一点足够清楚。

输入数据框:

my_df <- tibble(
  var1 = c(rep("A", 8), rep("B", 12)),
  var2 = c(rep("long_string_x", 4), 
           rep("long_string_y", 4),
           rep("long_string_x", 4), 
           rep("long_string_y", 4), 
           rep("long_string_z", 4))
)
Run Code Online (Sandbox Code Playgroud)

期望的输出:

# A tibble: 20 x 3
   var1  var2          group_rank
   <chr> <chr>              <dbl>
 1 A     long_string_x          1
 2 A     long_string_x          1
 3 A     long_string_x          1
 4 A     long_string_x          1
 5 A     long_string_y          2
 6 A     long_string_y          2
 7 A     long_string_y          2
 8 A     long_string_y          2
 9 B     long_string_x          1
10 B     long_string_x          1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
63
查看次数

标签 统计

r ×2

r-markdown ×2

crosstalk ×1

dplyr ×1

knitr ×1

parameter-passing ×1

reactable ×1