我有一个参数化的 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)
如何将需要参数的子文档组合在一起?
我有一个 RMarkdown 文档,它按组总结了有多少记录(行)具有各种属性。我希望能够通过在汇总之前进行过滤来操作表中包含哪些记录。我在下面创建了一个最小但类似的模型。
我想要的是一个交互式复选框,可以有效地“注释或取消注释”
# filter(weight_class == "Heavy") %>%
Run Code Online (Sandbox Code Playgroud)
以下。
我知道我可以使用 Shiny 做到这一点,但我需要能够直接与同事共享生成的 HTML 文件(在我的情况下通过共享 Box 文件夹),因此 Shiny 解决方案不可行,至少目前是这样。DT另外,我考虑过使用/的功能datatable,但据我所知,过滤需要在它到达那里之前发生(尽管我愿意被证明我对此是错误的)。
我见过像htmltools、 、之类的包htmlwidgets,crosstalk它们似乎可以促进这一点,但我对它们还不够熟悉,并且似乎无法在网上找到足够接近的示例来根据我的目的进行修改。
实际上,我希望能够过滤多个条件,并希望从过滤后的数据生成多个表格和绘图,但我希望下面的最小示例可以作为一个可行的起点。
我如何添加这样的复选框(或类似的)来创建这种类型的交互性,而不需要求助于 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) 此问题解决如何分配组内行的排名。我想将子组的排名分配给该子组中的一行。我真正想说的是,我需要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)