我正在尝试建立一个表,我的一个变量后面应该有另一个变量上标。我可以在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()
任何帮助表示赞赏。
答案 0 :(得分:2)
是否要输出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。
答案 1 :(得分:2)
您可以使用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)
修改
如Steen所指出的,这也适用于knitr
:
df %>%
mutate(X = paste0(X, "<sup>", Y, "</sup>")) %>%
select(X) %>%
knitr::kable(escape = FALSE)