1

首先,很抱歉没有提供可重现的示例并发布图像,最后解释一下我为什么这样做。

我真的很感谢一些帮助 - 评论或其他,我想我尽我所能做到具体和简洁

我要解决的问题是如何设置(以及在哪里进行)编码,以便在将.Rmd文档编织到html.

我正在使用通过库spss导入的标记文件并使用工具制作表格和图表。RhavensjPlot

我已经花了几乎一整天的时间试图解决这个问题,但我觉得我不知道该去哪里。

我的sessionInfo()

R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=Polish_Poland.1250  LC_CTYPE=Polish_Poland.1250    LC_MONETARY=Polish_Poland.1250
[4] LC_NUMERIC=C                   LC_TIME=Polish_Poland.1250    

每当我运行(通过控制台/脚本)

sjt.frq(df$sex, encoding = "Windows-1250")

我在 rstudio 查看器窗格中得到了一个带有正确编码的漂亮表格:

在此处输入图像描述

尝试不编码sjt.frq(df$sex)会给出: 在此处输入图像描述

每次调用时我都可以设置编码sjt.frq,但问题是,无论我如何sjt.frq在 Markdown 文档中设置,它总是以错误的方式编织。

在 .Rmd 中运行块是可以的(由于一个完全未知的原因encoding = "UTF-8在这里也可以正常工作,而以前没有):

在此处输入图像描述

编织同一个文件,不行:(请注意,该html标题包含所有波兰字符) 在此处输入图像描述

此外,它看起来可能是或者是html特定sjPlot的,因为knitr当它们在向量中时可以打印波兰字母并且被传递,就好像它们打印到控制台一样:

在此处输入图像描述

为了完成这项工作,我可以设置/更改什么吗?

在测试我发现的不同选项时,手动将sex变量转换为因子并再次分配标签,工作和 Rstudio 编织到html正确的编码

df$sex <- factor(df$sex, label = c("kobieta", "mężczyzna"))
sjt.frq(df$sex, encoding = "Windows-1250")

关于没有可重复的例子:

我试图用假数据模拟这个例子:

# Get libraries
library(sjPlot)
library(sjlabelled)

x <- rep(1:4, 4)
x<- set_labels(x, labels = c("ąę", "ćŁ", "óŚŚ", "abcd"))

# Run freq table similar to df$sex above
sjt.frq(x)
sjt.frq(x, encoding = "UTF-8")
sjt.frq(x, encoding = "Windows-1250")

问题是,每个sjt.frq调用都按照应有的方式编织(尽管仅encoding = "Windows-1250"在 rstudio 查看器窗格中正确呈现。

4

1 回答 1

3

如果您运行sjt.frq(),则会返回一个完整的 HTML 页面,该页面将显示在查看器中。

但是,要在 markdown/knitr-documents 中使用,只需要 HTML 输出的一部分:例如,您不需要该<head>部分,因为 knitr-document 会为 HTML 页面创建自己的标题。因此,print()knitr-documents 有一个自己的 -method,它使用另一个返回值包含到 knitr-file 中。

相比:

dummy <- sjt.frq(df$sex, encoding = "Windows-1250")
dummy$output.complete # used for default display in viewer
dummy$knitr           # used in knitr-documents

由于编码位于<meta>-tag 中,不包含在-value 中$knitr,因此encoding-argumentsjt.frq()对 knitr-documents 没有影响。

认为这可能会对您有所帮助:rmarkdown::render_site(encoding = 'UTF-8'). 也许还有其他选项可以对文本进行编码,或者您需要修改最终的 HTML 文件,在那里更改字符集编码。

于 2017-12-15T11:21:41.893 回答