R markdown html(tabular()) Вывод управляющих символов и разрывных таблиц
Вот пример кода, который сгенерирует таблицу, которую я хочу в 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()
оскорбительные строки, но это похоже на грязную работу вокруг чего-то, что на самом деле не нужно. У кого-нибудь есть понимание этого?
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) "
Когда я попытался запустить его через R Markdown с использованием HTML, ячейки, в которых были лишние пробелы, читались как необработанный HTML-код (например, ячейка Abnormal в группе 1 выше), и именно поэтому я получал код в своей таблице.
Я использовал CreateTableOne
функция, и для решения этой проблемы я использовал noSpaces=T
вариант в print(CreateTableOne())
, Затем я использовал htmlTable
распечатать table
объект, и это решило мою проблему.
Извините за бесстыдное продвижение, но вы можете попробовать мой пакет 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
```