Надписывание переменной над другой при построении таблиц в R и knitr - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь построить таблицу, и одна из моих переменных должна иметь другую переменную superscriptet после нее.Я могу найти несколько связанных ответов здесь на SO, но все они включают фиксированные значения, которые должны быть надстрочными, а не векторы, как в моем случае.
Также большинство примеров включают легенды сюжета, а не таблицы, как в моем случае (хотя я нене думаю, что это имеет большое значение).

Пример данных:

library(tidyverse)
library(knitr)

df <- crossing(
  X = seq(1:2),
  Y = c("A", "B"))

df

# A tibble: 4 x 2
      X Y    
  <int> <chr>
1     1 A    
2     1 B    
3     2 A    
4     2 B  

Я хотел бы изменить новую переменную, которая является просто X, со значениями Y надстрочными индексами после нее.

Вот что я попробовал (не работает):

df %>% mutate(
  New = paste0(X, "^Y")) %>% 
  kable()

df %>% mutate(
  New = paste0(X, ^{Y})) %>% 
  kable()

df %>% mutate(
  New = paste0(X, bquote(^~{.Y}~))) %>% 
  kable()

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете использовать tableHTML:

df <- data.frame(
  X = seq(1:2),
  Y = c("A", "B"))


library(dplyr)
library(tableHTML)

Вы можете слегка изменить X с тегом HTML <sup>, чтобы отобразить Y в качестве надмножества:

df %>% 
  mutate(X = paste0(X, "<sup>", Y, "</sup>")) %>% 
  select(X) %>% 
  tableHTML(rownames = FALSE,
            escape = FALSE,
            widths = 50)

result

Редактировать

Как указал Стин, это также работает с knitr:

df %>% 
  mutate(X = paste0(X, "<sup>", Y, "</sup>")) %>% 
  select(X) %>% 
  knitr::kable(escape = FALSE)
0 голосов
/ 08 октября 2018

Это для pdf вывода?Потому что в этом случае может сработать следующее:

library(tidyverse)
library(knitr)

df <- crossing(
    X = seq(1:2),
    Y = c("A", "B"))

df %>% mutate(
    New = paste0(X, "\\textsuperscript{", Y, "}")) %>% 
    kable(escape = FALSE)

Использование escape = FALSE для добавления LaTeX в таблицу.

...