【问题标题】:r markdown, knitr and latex symbolsr markdown、knitr 和 latex 符号
【发布时间】:2019-04-14 18:47:47
【问题描述】:

经过几个小时的寻找答案无济于事,我想我会在这里寻求建议。

我正在尝试在 r markdown 中使用 knitr 生成一些非常简单的 html 表格,但我无法让乳胶符号在列名中正确显示。

示例代码,有几个不同的符号:

kable(data.frame("$^3$" = "a",
                  "$\\epsilon^2$" = "b",
                  "$%$" = "c"),
                  escape = F)

如您所见,列名未格式化X..3.X..epsilon.2.X...

任何帮助将不胜感激

【问题讨论】:

  • 使用哪些软件包来实现这一点?
  • knitr 和 base r

标签: r latex r-markdown knitr


【解决方案1】:

您可以在您的kable 呼叫中设置col.names。它在您的data.frame-call 中不起作用,因为这不允许不以点或字母开头的列名。 你可以在这里看到:

my_data <- data.frame("$^3$" = "a",
                      "$\\epsilon^2$" = "b",
                      "$%$" = "c")
my_data
  X..3. X..epsilon.2. X...
1     a             b    c

解决办法是:

kable(my_data, escape = F, 
      col.names = c("$^3$", "$\\epsilon^2$", "$%$"))

您可能想要使用\varepsilon 而不是\epsilon,因为这会提供更漂亮的epsilon(在我看来)。

kable(my_data, escape = F, 
      col.names = c("$^3$", "$\\varepsilon^2$", "$%$"))

【讨论】:

  • 谢谢!我不知道数据框会导致此类问题。也为伐瑞西隆小费干杯!
【解决方案2】:

您可以在数据框中使用这些列名,但您需要告诉data.frame 函数不要使用check.names = FALSE 破坏它们。 但是,这还不足以修复您的示例,因为 $%$ 不是合法的 LaTeX。 您需要转义百分号,否则它将被视为注释字符。 所以这行得通:

my_data <- data.frame("$^3$" = "a",
                      "$\\epsilon^2$" = "b",
                      "$\\%$" = "c",
                      check.names = FALSE)
kable(my_data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多