【问题标题】:Can't source skript with rare characters in RStudio无法在 RStudio 中使用稀有字符获取脚本
【发布时间】:2026-02-13 09:20:03
【问题描述】:

按照here 提供的解决方案,我正在尝试实现一个替换重音字符的脚本。从控制台执行我的代码可以正常工作,但是当我执行此代码时:

x <- list('ÿ'='y')

来自 RStudio 脚本 R 返回以下错误:

source('~/R/DrivingDataAnalysis/R/WebScraper/VoltstatsScraper.R', encoding = 'UTF-8') 源错误(“~/TestScript.R”,: ~/TestScript.R:1:6: 意外的 INCOMPLETE_STRING 1:列表(' ^

对于链接中的其他重音字符,R 会解析脚本。如何在脚本中完成这项工作?我在 Windows 7 上使用 R 3.3.1 和 RStudio 0.99.896。

【问题讨论】:

  • 我无法在 RStudio 0.99.1266(预览版)上复制此问题。看起来 UTF-8 编码是在 0.99.903 中引入的(请参阅support.rstudio.com/hc/en-us/articles/…),因此您可能只需要更新您的 RStudio 版本
  • 感谢您的帮助。将 RStudio 更新到 0.99.903 确实解决了将编码设置为:ISO-8859-1 时的问题。然而,对于普通的 UTF-8 编码,问题仍然存在。您是否尝试将编码设置为“UTF-8”以重现错误?还将编码设置为 WINDOWS-1252 也会产生此错误。
  • 非 ASCII 字符 + R + Windows == 你会过得很糟糕。
  • 是的,看起来很像 :-)。由于这是一个更大列表中的唯一角色,因此无论如何都不是世界末日
  • 虽然 Kevin 是对的,但您通常应该将编码设置为 UTF-8,而且几乎没有理由使用 Windows-foo/ISO-bar 等传统编码。要在 Windows 上使用 Unicode 解决 R 错误,请使用 eval(parse(…, encoding = 'UTF-8') instead of source(…)

标签: r rstudio


【解决方案1】:

将我的评论转换为答案,因为我认为它会解决您的问题:

  • 确保您的脚本以UTF-8 编码。 Everything else is madness.1
  • 不要使用基本上不起作用的source,而是使用

    eval(parse('your/file.r', encoding = 'UTF-8'))
    

    This works as a substitute for source. 正如链接的答案所解释的,原因是source 尝试(但失败)转换 UTF-8 编码的字符,而 parse 不执行任何转换;相反,它从文件中逐字加载字符串,并简单地将其标记为 UTF-8 编码。

不幸的是,假设 RStudio 的“源”按钮在内部使用 source 而不是上述解决方法,您必须手动执行此操作。


1 其他 Unicode 转换可能有意义,但据我所知,R 根本不支持。

【讨论】: