Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R标记文档的循环中生成formattable小部件_R_For Loop_R Markdown_Htmlwidgets - Fatal编程技术网

在R标记文档的循环中生成formattable小部件

在R标记文档的循环中生成formattable小部件,r,for-loop,r-markdown,htmlwidgets,R,For Loop,R Markdown,Htmlwidgets,我想将formattable之类的HTML小部件(来自formattable包)放在通过RMarkdown生成的HTML页面中。我需要从for循环中生成小部件。我该怎么做?无论是否使用print(),两者都不起作用 这是一个示例代码(部分取自): --- 标题:“formattable示例循环” 输出:html\u文档 --- ```{r} 库(格式化表) df试试这个(表输出有一个小包装器,它是formattable站点的代码,因为它更容易阅读:-) --- 标题:“formattable示

我想将formattable之类的HTML小部件(来自formattable包)放在通过RMarkdown生成的HTML页面中。我需要从for循环中生成小部件。我该怎么做?无论是否使用
print()
,两者都不起作用

这是一个示例代码(部分取自):

---
标题:“formattable示例循环”
输出:html\u文档
---
```{r}
库(格式化表)
df试试这个(表输出有一个小包装器,它是formattable站点的代码,因为它更容易阅读:-)

---
标题:“formattable示例循环”
输出:html\u文档
---
```{r设置}
库(格式化表)
图书馆(htmltools)
df解决方案:
这是一种依赖knitr的
knit_child
功能的方法

1。创建所有formattable小部件并将其存储在列表中

table_list <- lapply(X = list('First_Table' = df_1,
                              'Second_Table' = df_2),
                     FUN = formattable)
rmd_paths <- c("TEMP_First_Table.rmd", "TEMP_Second_Table.rmd")
names(rmd_paths) <- c("First_Table", "Second_Table")

for (table_name in c("First_Table", "Second_Table")) {
    sink(file = rmd_paths[table_name])
    cat("  \n",
        "```{r, echo = FALSE}",
            "table_list[[table_name]]"
        "```",
        sep = "  \n")
    sink()
}

完整RMD示例: 下面是一个完整的示例,它将
iris
数据拆分为三个单独的数据帧(每个物种一个),并为每个单独的数据帧创建一个
formattable

---
标题:“示例”
输出:html\u文档
---
```{r创建_表}
库(格式化表)

这看起来很有希望!谢谢但是,由于您的解决方案不使用for循环,因此我无法在脚本中使其工作。我会继续尝试我会继续尝试运行这个,并不断在匹配中得到错误。乐趣(fun):“0.2”不是一个函数、字符或符号
知道为什么吗?@Chuck看看
?颜色栏
,第二个参数
fun
是“将输入向量映射到0到1的值的变换函数。默认情况下使用比例。”嗨,rdata,你做过这个吗?@chuckM我想当时我被另一个项目分散了注意力,我没有完成这个项目。悲伤的脸:(谢谢你的回复)。
table_list <- lapply(X = list('First_Table' = df_1,
                              'Second_Table' = df_2),
                     FUN = formattable)
rmd_paths <- c("TEMP_First_Table.rmd", "TEMP_Second_Table.rmd")
names(rmd_paths) <- c("First_Table", "Second_Table")

for (table_name in c("First_Table", "Second_Table")) {
    sink(file = rmd_paths[table_name])
    cat("  \n",
        "```{r, echo = FALSE}",
            "table_list[[table_name]]"
        "```",
        sep = "  \n")
    sink()
}
```{r, results='asis'}
    for (table_name in c("First_Table", "Second_Table") {
        cat(knitr::knit_child(rmd_paths[[table_name]],
                              quiet= TRUE))
        file.remove(rmd_paths[[table_name]]
}
```
---
title: "Example"
output: html_document
---


```{r create_tables}
library(formattable)

df_list <- split(x = iris,
                 f = iris$Species)

table_list <- lapply(df_list, formattable)
```

```{r create_temp_rmd_files, echo=FALSE}

dir.create(path = "temp_rmd")

temp_rmd_list <- list()

for (table_name in names(table_list)) {

  temp_rmd_path <- paste0("temp_rmd/", table_name, ".rmd")
  temp_rmd_list[[table_name]] <- temp_rmd_path


  sink(file = temp_rmd_path)
  cat("  \n",
        "### ", table_name, "  \n",
        "```{r, echo=FALSE}", "  \n",
        'table_list[[table_name]]',
        "  \n",
        "```",
      "  \n",
      sep = "")
  sink()
}
```

```{r knit_temp_rmd_files, echo=FALSE, results='asis'}

for (table_name in names(table_list)) {

  # Knit the temporary RMD file
  cat(knitr::knit_child(temp_rmd_list[[table_name]],
                        quiet = TRUE))

  # Delete the temporary RMD file
  file.remove(temp_rmd_list[[table_name]])
}

```