gpt4 book ai didi

r - knitr中的非英文特殊字符

转载 作者:行者123 更新时间:2023-12-04 12:08:14 27 4
gpt4 key购买 nike

我正在使用 knitr 1.1。在 R 3.0.0 和 WinEdt (RWinEdt 2.0) 中。我在 knitr 识别瑞典语字符(ä、ö、å)时遇到问题。这不是 R 的问题;这些字符甚至可以在文件名、目录名、对象等中识别。在 Sweave 中也不是问题。

我已经有 \usepackage[utf8]{inputenc}在我的文档中,但 knitr 似乎无法处理特殊字符。运行 knitr 后,我收到以下消息:

Warning in remind_sweave(if (in.file) input) :
It seems you are using the Sweave-specific syntax; you may need Sweave2knitr("deskriptiv 130409.Rnw") to convert it to knitr

processing file: deskriptiv 130409.Rnw

(*) NOTE: I saw chunk options "label=läser_in_data"
please go to http://yihui.name/knitr/options (it is likely that you forgot to
quote "character" options)

Error in parse(text = str_c("alist(", quote_label(params), ")"), srcfile = NULL) :
1:15: unexpected input
1: alist(label=lä
^
Calls: knit ... parse_params -> withCallingHandlers -> eval -> parse
Execution halted

它提示的特定标签是 label=läser。更改标签是不够的,因为如果 R 对象使用 äåö,knitr 甚至会提示。

我使用了 Sweave2knitr(),因为该文件最初是为 Sweave 创建的,但结果并不好:现在所有 äåö 都已转换为 äpåö,无论是在 R block 中还是在 latex 文本中,并且 knitr 仍然给出一条错误消息。

session 信息:
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=Swedish_Sweden.1252 LC_CTYPE=Swedish_Sweden.1252 LC_MONETARY=Swedish_Sweden.1252
[4] LC_NUMERIC=C LC_TIME=Swedish_Sweden.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] knitr_1.1
loaded via a namespace (and not attached):
[1] digest_0.6.3 evaluate_0.4.3 formatR_0.7 stringr_0.6.2 tools_3.0.0

正如我提到的,有些文件名和对象带有瑞典语字符(因为以前这不是问题),而且文本也需要使用瑞典语。

感谢您帮助 knitr 在英语以外的地方工作。

最佳答案

我想你必须联系 R-Sweave mode 的维护者在 WinEdt 中,如果您使用此模式调用 knitr .问题是 WinEdt 必须将文件的编码传递给 knit()如果您没有使用操作系统的 native 编码。你提到了UTF-8但这不是 Windows 的 native 编码,因此您不能使用 \usepackage[utf8]{inputenc}除非您确定您的文件是 UTF8 编码的。

这里混合了几个问题,不可能用一个答案来解决所有问题。

第一个问题是label=läser , 这应该是 label='läser' ,即你must quote所有 block 标签(也检查文档中的其他标签); knitr尝试在您编写 <<foo>>= 时自动引用您的标签(它变成了 <<'foo'>>= ),但是当你使用 <<label=foo>>= 时这不起作用(你必须明确写<<label='foo'>>=)。但是这个问题在这里可能不是必需的。

我认为这里真正的问题是文件编码(这在 Windows 下很讨厌)。您似乎在使用 UTF-8在不尊重 UTF-8 的系统下默认情况下。在这种情况下,您可以调用 knit('yourfile.Rnw', encoding = 'UTF-8') ,即将编码传递给 knit() .我不使用 WinEdt,所以我不知道该怎么做。您可以hard-code the encoding in the configurations ,但不建议这样做。

两个建议:

  • 不要使用 UTF-8在 Windows 下;改用您的系统 native 编码( Windows-1252 ,我猜);
  • 或者使用 RStudio 代替 WinEdt,它可以将编码传递给 knitr ;

  • 顺便说一句,因为 Sweave2knitr()弹出来,你的Rnw文档肯定有其他问题。要诊断问题,有两种方法:
  • 如果您使用 UTF-8 , 运行 Sweave2knitr('deskriptiv 130409.Rnw', encoding = 'UTF-8')
  • 如果您使用操作系统的 native 编码,只需运行 Sweave2knitr('deskriptiv 130409.Rnw')

  • 请阅读 documentation如果您对 Sweave2knitr() 打印的诊断信息有疑问.

    关于r - knitr中的非英文特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926890/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com