【问题标题】:R markdown html(tabular()) Outputting escape characters & breaking tablesR markdown html(tabular()) 输出转义字符和打断表格
【发布时间】:2017-06-09 14:27:16
【问题描述】:

这是一个代码示例,它将在 R Markdown 中生成我想要的表格:

---
title: "Table"
author: "Nick"
date: "9 June 2017"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tables)
Age <- sample(0:19, 500, replace = TRUE)
Unborn <- sample(0:1, 500, replace = TRUE)
GenderBand <- sample(1:3, 500, replace = TRUE)
EthnicityGroup <- sample(1:5, 500, replace = TRUE)
InitialCategory <- sample(1:5, 500, replace = TRUE)

data <- data.frame(Age, Unborn, GenderBand, EthnicityGroup, InitialCategory)
Age <- 6
data$Age[data$ChildAge31March == 0] <- 1
data$Age[data$ChildAge31March >= 1 & data$ChildAge31March <= 4] <- 2
data$Age[data$ChildAge31March >= 5 & data$ChildAge31March <= 9] <- 3
data$Age[data$ChildAge31March >= 10 & data$ChildAge31March <= 15] <- 4
data$Age[data$ChildAge31March >= 16 & data$ChildAge31March <= 50] <- 5
data$Age <- factor(data$Age,
                  levels = c(1,2,3,4,5,6),
                  labels = c("Under 1",
                             "1 to 4 Years Old",
                             "5 to 9 Years Old",
                             "10 to 15 Years Old",
                             "16 to 50 Years Old",
                             "Other"))
data$Unborn <- factor(data$Unborn, levels = c(0,1), labels = c("Born","Unborn"))
data$GenderBand <- factor(data$GenderBand, levels = c(1,2,3), labels = c("Male","Female","Unknown"))
data$EthnicityGroup <- factor(data$EthnicityGroup, 
                              levels = c(1,2,3,4,5,6), 
                              labels = c("White","Mixed","Asian","Black","Other","Refused"))
data$InitialCategory <- factor(data$InitialCategory,
                               levels = c(1,2,3,4,5),
                               labels = c("Emotional",
                                          "Multiple",
                                          "Neglect",
                                          "Phyical",
                                          "Sexual"))
Table <- tabular(GenderBand + (Unborn * Age) + EthnicityGroup ~ InitialCategory, data=data)
```

```{r output, echo=FALSE, results="asis"}
html(Table)
```

这非常符合我的要求。给我这个: 但是,当我使用真实数据执行此操作时,我得到了: 我已经在 HTML 中发现了这个问题,并且似乎出于某种原因,在某些单元格(损坏的单元格)上,html(tablular()) 输出了以下内容:

我完全不知道为什么它似乎在扰乱 HTML 输出,因为这些数字是由 R 生成的(它们是因素的计数)。

理论上,我也许可以将 HTML 输出存储在一个变量中,并将 gsub() 存储在有问题的字符串中,但这对于一些不应该真正需要的东西来说似乎是一种混乱的解决方法。有人对此有任何见解吗?

【问题讨论】:

  • 试试html(htmltools::htmlEscape(Table))
  • 谢谢,但那没有什么区别。 :(

标签: html r html-table markdown html-escape-characters


【解决方案1】:

对不起,无耻的自动促销,但你可以试试我的包expss

---
title: "Table"
author: "Nick"
date: "9 June 2017"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(expss)
ChildAge31March = sample(0:19, 500, replace = TRUE)
Unborn = sample(0:1, 500, replace = TRUE)
GenderBand = sample(1:3, 500, replace = TRUE)
EthnicityGroup = sample(1:5, 500, replace = TRUE)
InitialCategory = sample(1:5, 500, replace = TRUE)

data = data.frame(ChildAge31March, Unborn, GenderBand, EthnicityGroup, InitialCategory)

data = compute(data,  {
    Age = recode(ChildAge31March, 
                 0 ~ 1, 
                 1 %thru% 4 ~ 2,
                 5 %thru% 9 ~ 3,
                 10 %thru% 15 ~ 4,
                 16 %thru% 50 ~ 5,
                 other ~ 6
    )   
    val_lab(Age) = autonum(
        "Under 1
         1 to 4 Years Old
         5 to 9 Years Old
         10 to 15 Years Old
         16 to 50 Years Old
         Other")

    val_lab(Unborn) = num_lab(
         "0 Born
          1 Unborn")
    val_lab(GenderBand) = autonum(
         "Male
         Female
         Unknown")
    val_lab(EthnicityGroup) = autonum(
        "White
         Mixed
         Asian
         Black
         Other
         Refused")
    val_lab(InitialCategory) = autonum(
        "Emotional
         Multiple
         Neglect
         Phyical
         Sexual" )
})

Table = data %>% 
    tab_cols(InitialCategory) %>% 
    tab_cells(GenderBand, Unborn %nest% Age, EthnicityGroup) %>% 
    tab_stat_cases(total_row_position = "none") %>% 
    tab_pivot()

```

```{r output, echo=FALSE, results="asis"}
Table
```

【讨论】:

  • 我提供的代码也能正常工作,我的问题更多是关于为什么它在其他实例中不能正常工作以及如何解决这个问题。
【解决方案2】:

这有点晚了,但我遇到了同样的问题,最近才弄清楚发生了什么。当 R 输出我的表格时,它会在汇总数据的每个单元格周围对齐并添加引号:

Stratified by Group
                                  1                 2                 3           
n                                 "   676"          "  1378"          " 27245"         
DON_AGE (mean (sd))               " 41.24 (12.76)"  " 36.92 (11.03)"  " 39.89 (17.70)" 
DON_LF_LU_BRONCHO (%)             "   "             "  "              " "            " 
     Abnormal                     "     8 ( 1.2) "  "    15 ( 1.1) "  "  2258 ( 8.3) "  
     Missing                      "   631 (93.3) "  "  1333 (96.7) "  " 19343 (71.0) "  
     Normal                       "    37 ( 5.5) "  "    30 ( 2.2) "  "  5644 (20.7) "

当我尝试使用 HTML 通过 R Markdown 运行它时,有多余空格的单元格被读取为原始 HTML 代码(例如,上面第 1 组中的异常单元格),这就是为什么我在我的表。

我使用了CreateTableOne 函数,为了解决这个问题,我使用了print(CreateTableOne()) 中的noSpaces=T 选项。然后,我使用htmlTable 打印table 对象,这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-11
    • 2018-06-22
    • 2022-06-16
    • 2020-05-20
    • 1970-01-01
    • 2021-12-10
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多