【发布时间】:2017-12-14 18:49:00
【问题描述】:
首先,很抱歉没有提供可重现的示例并发布图片,最后解释一下我为什么这样做。
非常感谢一些帮助 - cmets 或其他方面,我想我已尽我所能做到具体和简洁
我要解决的问题是如何设置(以及在哪里进行)编码,以便在将.Rmd 文档编织到html 后获得波兰字母。
我正在处理通过haven 库导入到R 的标记spss 文件,并使用sjPlot 工具制作表格和图表。
我已经花了几乎一整天的时间试图解决这个问题,但我觉得我不知道该去哪里。
我的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 时设置编码,但问题是,无论我如何在 markdown 文档中设置 sjt.frq,它总是以错误的方式编织。
在 .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 查看器窗格中正确呈现。
【问题讨论】:
标签: r encoding character-encoding knitr sjplot