gpt4 book ai didi

r - 如何使用 UTF-8 编码保存的 source() .R 文件?

转载 作者:行者123 更新时间:2023-12-03 07:26:26 26 4
gpt4 key购买 nike

将以下内容直接复制并粘贴到 R 中时效果很好:

> character_test <- function() print("R同时也被称为GNU S是一个强烈的功能性语言和环境,探索统计数据集,使许多从自定义数据图形显示...")
> character_test()
[1] "R同时也被称为GNU S是一个强烈的功能性语言和环境,探索统计数据集,使许多从自定义数据图形显示..."

但是,如果我制作一个名为character_test.R的文件,其中包含完全相同的代码,将其保存为UTF-8编码(以便保留特殊的汉字),那么当我source( )在 R 中,我收到以下错误:

> source(file="C:\\Users\\Tony\\Desktop\\character_test.R", encoding = "UTF-8")
Error in source(file = "C:\\Users\\Tony\\Desktop\\character_test.R", encoding = "utf-8") :
C:\Users\Tony\Desktop\character_test.R:3:0: unexpected end of input
1: character.test <- function() print("R
2:
^
In addition: Warning message:
In source(file = "C:\\Users\\Tony\\Desktop\\character_test.R", encoding = "UTF-8") :
invalid input found on input connection 'C:\Users\Tony\Desktop\character_test.R'

如果您能在解决问题和帮助我了解这里发生的事情方面提供任何帮助,我们将不胜感激。

> sessionInfo() # Windows 7 Pro x64
R version 2.12.1 (2010-12-16)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base

loaded via a namespace (and not attached):
[1] tools_2.12.1

> l10n_info()
$MBCS
[1] FALSE

$`UTF-8`
[1] FALSE

$`Latin-1`
[1] TRUE

$codepage
[1] 1252

最佳答案

在 R/Windows 上,source 会遇到无法在当前区域设置(或 Windows 中的 ANSI 代码页)中表示的任何 UTF-8 字符的问题。不幸的是,Windows 没有 UTF-8 作为 ANSI 代码页 - Windows 有一个技术限制,即 ANSI 代码页只能是每个字符一个或两个字节的编码,而不是像 UTF 这样的可变字节编码 - 8.

这似乎不是一个根本性的、无法解决的问题——只是 source 函数出了问题。通过这样做,您可以获得 90% 的成功:

eval(parse(filename, encoding="UTF-8"))

这几乎与使用默认参数的 source() 一样工作,但不允许您执行 echo=Teval.print=T

关于r - 如何使用 UTF-8 编码保存的 source() .R 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031630/

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