【问题标题】:Pixiedust table in loop in r markdown not renderingr markdown中循环中的Pixiedust表不渲染
【发布时间】:2018-03-10 06:31:49
【问题描述】:

与问题相关,我有一个包含状态因子(“马萨诸塞州”、“加利福尼亚州”等)和 2 个值字段的数据集。我想为每个州创建一个图表,其下方有一个表格,显示相关字段以及这些字段之间的差异。 我发现使用循环似乎需要一个 results = 'asis' 选项和一个 cat(" \n") 在循环结束时打印图像。这行得通。但是,我似乎可以得到一张表的唯一方法是使用 xtable 或 kable。我想用 pixiedust 给桌子上色或美化桌子。

这是一个最小的例子:

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(pixiedust)
library(ggplot2)
library(knitr)
library(xtable)

df <- data.frame(state = c("MA", "CA"), last_year = c(105, 90), this_year     = c(110, 85))

```

# Here is the loop

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

for (i in 1:nrow(df)){
  state_dat <- df[i,]
  p1 <- ggplot(state_dat, aes(last_year, this_year)) +
    geom_point()
  print(p1)
  cat("  \n")

  tab <- data.frame(last_year = state_dat$last_year, this_year = state_dat$this_year, yoy_percent = 100*(state_dat$this_year - state_dat$last_year)/state_dat$last_year)

dust(tab) %>%
    sprinkle(rows = 1, bg = "orchid")
  cat("  \n")

print(kable(tab, row.names = FALSE, align = "c"))
cat("  \n")

print(xtable(tab, auto = TRUE),type = "html", comment = FALSE, include.rownames = F) 
cat("  \n")

}
```

我还尝试将灰尘命令的结果分配给一个对象并打印:

pixie <- dust(tab) %>%
    sprinkle(rows = 1, bg = "orchid")
print(pixie)
cat("  \n")

无济于事。

pixiedust 表是否可以通过选项 asis 生成为 html 块?是否有另一种解决方法可以在循环中生成表格和图表?

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    是的,这可以做到。要到达那里,您必须在 print.dust 方法中关闭 asis 打印。这可以通过以下方式完成:

    dust(tab) %>%
        sprinkle(rows = 1, bg = "orchid") %>% 
      print(asis = FALSE) %>% 
      cat()
    

    希望及时提出更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2020-07-29
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多