R markdown 在 Mac 上无法编织到 html

R markdown won't knit to html on Mac

提问人:Alokin 提问时间:11/1/2023 最后编辑:Alokin 更新时间:11/22/2023 访问量:36

问:

我正在尝试在 mac 和 windows 上将 Rmarkdown 编织成 html。在此文件中,有大量文本数据正在使用 R 包 gt 处理成文本列。在 Windows 中,代码运行良好,没有任何问题。

当我尝试在 mac 上运行相同的代码时,出现以下错误:

Error in gsub("'", "'", html_tbl) : input string 1 is invalid

我知道问题出在哪里:文本字符串中有一个撇号,在原始数据中看起来像黑色菱形中的问号:

"...think a lot of us didn�t quite understand wh..."

我不明白的是,为什么代码在 ios 上失败而不是在 Windows 上失败;我能做些什么来解决这个问题并防止这个问题继续下去,如果可能的话,我该如何解决这个问题,以便传递给html输出的句子保持其原始含义和组成。

编辑:这是读取文件的方式:

df_import <- read_csv("file_path")
HTML R Markdown ASCII 针织

评论

1赞 Gregor Thomas 11/1/2023
您的 Mac 上的软件包是否是最新的?具体来说,是 、 和 ?甚至可能是 RStudio?rmarkdownrmarkdownknitr
1赞 Gregor Thomas 11/1/2023
哎呀,意思是和markdownrmarkdown
3赞 Till 11/2/2023
该问题可能与文本文件的字符编码以及 Windows 和 macOS 上不同的默认编码设置有关。如果使用函数读取文档,请检查两个系统上是否显示相同的编码。为了能够更好地帮助你,请在问题中添加一个 R 代码片段,以显示你如何读取数据,以及产生错误的代码部分。readrdefault_locale()
1赞 Alokin 11/2/2023
我已经检查过了,所有软件包都是最新的。我也在问题中添加了代码的读取功能。
0赞 Alokin 11/2/2023
default_locale() 在两个系统中显示相同的编码。

答:

1赞 Angelica Becerra 11/22/2023 #1

这似乎是编码问题。因此,您可以尝试使用编码来读取 csv。你应该做的是:

  • 首先使用 uchardet 库检测编码uchardet::detect_file_enc("csv_file.csv")
  • 其次,使用编码读取文件,例如使用以下编码之一:

readr::read_csv2("csv_file.csv", locale = locale(encoding = "WINDOWS-1252"))

readr::read_csv2("csv_file.csv", locale = locale(encoding = "latin1"))

readr::read_csv2("csv_file.csv", locale = locale(encoding = "UTF-8"))

评论

1赞 Alokin 11/30/2023
你是对的,这是一个编码问题。我使用了 latin1 编码,这能够让我解决这个问题。不过,您链接的软件包 uchardet 已不在 CRAN 上。但是,readr 包有一个名为 guess_encoding 的函数,可以执行相同的操作。