0

我正在使用 R Markdown 创建一个 pdf 文档。我想使用modelsummary包中包含的modelplot()函数来显示一个图中的模型估计和标准误差,但是如果图的图例包含日文字符,就会出现乱码。官方文档没有提到如何处理日语。我能做些什么来解决这个问题?下面的图和代码是使用示例数据复制的。

model <- 
  list(
  `モデル1` = lm(mpg ~ ., data = mtcars),
  `モデル2` = lm(Sepal.Length ~ ., data = iris)
  )

modelplot(model)

使用 modelplot() 输出图形

这是我为文本的日文排版设置的yaml的基本配置。

output: 
  pdf_document:
    dev: cairo_pdf
    latex_engine: xelatex
documentclass: bxjsarticle
classoption: xelatex,ja=standard,a4paper,jafont=ms
header-includes: |
  \usepackage{zxjatype}

此外,为了使用 ggplot2 输出图表,描述了以下设置。如果包含此设置,则使用 ggplot2 的图形将输出而不会出现乱码,但前提是您使用 modelplot()。

library(fontregisterer)
library(systemfonts)
family_sans <- "MS Gothic" 
family_serif <- "MS Mincho" 
theme_set(
  theme_classic() +
  theme(
    text = element_text(family = family_serif, face = "plain"),
    title = element_text(face = "plain"),
    axis.title = element_text(face = "plain"),
    axis.title.x = element_text(face = "plain"),
    axis.title.y = element_text(face = "plain")
  )
)
4

1 回答 1

1

我无法在我的 Linux 或 Mac 机器上复制此问题,因此这似乎是特定于 Windows 的问题。UTF-8 和 unicode 支持在Windows 上R是出了名的挑剔。

也就是说,至少在我自己的 Windows 机器上,下面的代码会生成你想要的图形。诀窍是在创建列表后将模型名称分配给列表。

library(modelsummary)

model <- list(
    lm(mpg ~ ., data = mtcars),
    lm(Sepal.Length ~ ., data = iris))
names(model) <- c("モデル2", "モデル1")

modelplot(model)

上面的代码确实会产生警告,我不知道如何摆脱它。坦率地说,我不是编码专家,所以如果有人对此问题有见解,请在这里加入讨论:

https://github.com/vincentarelbundock/modelsummary/issues/345

于 2021-08-09T13:15:16.707 回答