在 R、Rmd、knitr、bookdown 中打印 UTF-8 字符

2023-12-02

更新(2018 年 4 月):
在不同的设置和计算机下,问题仍然存在。 我相信它与所有 UNICODE、UTF-8 字符有关。

https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

PROBLEM:

我的 Rmd/R 文件以 UTF-8 编码保存。其他sessionInfo()细节:

Platform: x86_64-w64-mingw32/x64 (64-bit)
LC_CTYPE=English_Canada.1252

other attached packages:
[1] knitr_1.17

这是一个简单的数据框,我需要将其打印为 html 文档中的表格,例如和kable(dt)或任何其他方式。

dt <- data.frame(
name=c("Борис Немцов","Martin Luter King"),
year=c("2015","1968") 
)

以下任一方法都不起作用:

Way 1

如果我保持 Sys.setlocale() 不变(即"English_Canada.1252"),然后我得到这个:

> dt;                                                                                           
name year
1 <U+0411><U+043E><U+0440><U+0438><U+0441> <U+041D><U+0435><U+043C><U+0446><U+043E><U+0432> 2015
2 Martin Luter King 1968
> kable(dt)
|name                                                                                      |year |
|:-----------------------------------------------------------------------------------------|:----|
|<U+0411><U+043E><U+0440><U+0438><U+0441> <U+041D><U+0435><U+043C><U+0446><U+043E><U+0432> |2015 |
|Martin Luter King                                                                         |1968 |

注意<U+....>打印而不是字符。
Using dt$name <- enc2utf8(as.character(dt$name))没有帮助。

Way 2

如果我改变Sys.setlocale("LC_CTYPE", "russian")#“Russian_Russia.1251”`, 然后我得到这个:

> dt; 
name year
1      Áîðèñ Íåìöîâ 2015
2 Martin Luter King 1968

> kable(dt)
|name              |year |
|:-----------------|:----|
|Áîðèñ Íåìöîâ      |2015 |
|Martin Luter King |1968 |

请注意,字符已变成乱码。
Using print(dt,encoding="windows-1251"); print(dt,encoding="UTF-8")没有效果。

有什么建议吗?

我能找到的最接近解决此问题的链接位于以下链接中,但它们没有帮助:http://blog.rolfredheim.com/2013/01/r-and-foreign-characters.html, https://tomizonor.wordpress.com/2013/04/17/file-utf8-windows, https://www.smashingmagazine.com/2012/06/all-about-unicode-utf8-character-sets

我还尝试使用 1251 编码(而不是当前的 UTF-8 编码)和其他一些字符转换/处理包保存我的文件。还没有什么帮助。

UPDATE:

打开相关问题:当出现错误“请求设置区域设置……无法兑现”时,如何更改 Sys.setlocale


唯一有效的解决方案是谢一辉(knitr开发人员),即:
创建文件.Rprofile,其中包含一行Sys.setlocale("LC_CTYPE", "russian")并将其放置在您的主目录或工作目录中。

但是,请注意,它仅适用于使用kable(),即在knitr包裹。
如果您尝试使用以下方式打印print(dt$name[1]),你仍然得到Áîðèñ Íåìöîâ.
但是,如果您使用kable(dt$name[1]),你会得到你需要的 -Борис Немцов !

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R、Rmd、knitr、bookdown 中打印 UTF-8 字符 的相关文章

  • 替换列表列表中的元素

    The applyR 中的函数是简化 for 循环以获得输出的好方法 是否有一个等效的函数可以帮助人们在替换向量的值时避免 for 循环 通过示例可以更好地理解这一点 Take this list for example x list li
  • 从 R 中的向量中选择所有可能的元组

    我正在尝试用 R 编写一个程序 当给定一个向量时 将返回所有可能的tuples http en wikipedia org wiki Tuples该向量中的元素 例如 元组 c a b c c a b c 出租车 c a c c b c c
  • 如何在R中删除重复项

    我有一个非常大的数据集 如下所示 df lt data frame school c a a a b b c c c year c 3 3 1 4 2 4 3 1 GPA c 4 4 4 3 3 3 2 2 school year GPA
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou

随机推荐

  • 数据库连接池[Hikari]初始化错误

    我正在尝试为我的 Web 应用程序配置 HikariCP 我没有使用任何框架 它是一个简单的 Java Web 应用程序 当我尝试通过普通 JDBC 建立连接时 它成功了 并且我能够执行所有数据库操作 但是 当我尝试与连接池建立连接时 初始
  • iPhone 3.0 的 Safari 缓存大小

    互联网上的多个网站声称 iPhone 2 2 上的 Safari 缓存为 25k 和 19 个对象 有谁知道 iPhone 3 0 上 Safari webview 的缓存大小是多少 特别是如果您使用客户端存储或缓存清单 您可以存储更多数据
  • 如何将参数发送到 Microsoft Access 查询,以便我可以将访问参数查询导入 Excel?

    我需要将具有弹出输入参数的 Microsoft Access 查询导入到 Excel 中 我尝试了下面的代码 但它不起作用 我收到错误 93 告诉我未设置对象或对象变量 我希望能够引用 Excel 中包含当前和上个月值的两个单元格 然后将这
  • Python Regex - 拒绝带有换行符的字符串

    我想将完整的字符串与特定的模式匹配 比方说 word aaaa test re match r aaaa word this returns True 但是 如果该单词后跟换行符 word aaaa n test re match r aa
  • 如何使用 API v3 列出 YouTube 频道的所有上传视频(URL)?

    本文展示了如何在版本 2 中从特定频道获取所有上传的视频 但我不知道如何在版本 3 中做到这一点 是否可以 大多数版本 3 的文章只讨论搜索 Here 您将找到所有 Data API v3 参考 只需几个步骤即可 1 You list上传完
  • 如何使用任意语言环境比较“basic_string”

    我重新发布了今天早些时候提交的问题 但现在我引用了一个具体的例子来回应我收到的反馈 原问题可以找到here 请注意 这不是家庭作业 我只是想确定 C 是否无法执行 有效的 不区分大小写比较一个basic string对象也包含任意任意的因素
  • 此正则表达式中单引号的用途是什么?

    我继承了一些带有以下正则表达式的 C 代码 Regex a zA Z s 1 40 除了单引号的作用之外 我理解这个字符串 我到处搜索但似乎找不到解释 有任何想法吗 据我所知 这个表达是多余的 它匹配a z or A Z 或者 字符 或之间
  • gethostbyname() 在 iOS6 中失败

    我使用 gethostbyname 来获取设备 IP 在iOS5中 它运行良好 但在iOS6中 gethostbyname 返回的主机值为NULL 下面是我的代码 用于获取设备当前的本地IP retun the host name NSSt
  • 如何通过 HTML 下拉或选择元素实现自动完成功能?

    嗨 我正在尝试创建auto completion的功能下拉或选择html 表单元素 我需要一个功能 比如用户启动后typing on a drop down select元素根据它的match able元素将以以下形式出现选定的元素特定下拉
  • 如何在两个不同选项卡的内容脚本之间传输数据?

    在我的扩展中 我需要将一些数据从一个选项卡的内容脚本传输到另一个选项卡的内容脚本 如果我知道该选项卡对象的名称或 url 的一部分 如何使用 chrome tabs 选择某个选项卡 两个选项卡的脚本如何通信 UPDATE 显然我在 chro
  • 如何使用 stat_smooth 在二因子图上显示一条线?

    我有一个这样的 data frame df lt data frame a runif 1000 b runif 1000 c runif 1000 d sample c yes no 1000 replace TRUE 我进行了逻辑回归
  • 迭代 Boost fusion::vector

    我正在尝试使用以下方法迭代 boost fusion 向量 typedef typename fusion result of begin
  • 如何以编程方式将录制的音频文件保存在另一个文件夹中?

    我试图将录制的音频文件保存在我希望的文件夹中 而不是默认文件夹中 但不知何故我没能做到 my code Intent recordIntent new Intent MediaStore Audio Media RECORD SOUND A
  • 无法将透明 PNG 放在普通图像上 Python Tkinter

    所以我有 2 张图像 其中 1 张图像应该是背景 另外 1 张只是角色图像 我可以将一张图像放在另一张图像上 但该图像具有白色边框 即使它是 PNG 文件 This is how it looks like This is how I wa
  • Ruby 中的闭包和模块

    我有点困惑为什么这段代码不起作用 def create type Module new do def foo type end end end 打电话时foo在返回的模块上 type没有定义 我应该使用 Proc 或 lambda 来捕获
  • 在 bash 中使用正则表达式删除 XML 注释

    我想使用正则表达式 awk sed grep 删除 bash 中的 XML 注释 我看过有关此问题的其他问题 但他们遗漏了一些东西 这是我的 xml 代码 table table
  • mPDF 错误:某些数据已输出到浏览器

    我正在使用 mpdf 将 html 转换并显示为 PDF 当我在本地电脑 服务器上运行它时 我看到了 pdf 但是当我在我的站点服务器上运行它时 我收到此错误 mPDF错误 某些数据已输出到浏览器 无法发送PDF文件 url http SI
  • Rails:使用 Font Awesome

    我的网页设计师为我提供了更新的字体 图标 这些字体 图标已添加到 font Awesome 他将其放置在本地字体文件夹中 我还获得了一个 font awesome css 文件 我直接将 fonts 文件夹复制到我的 asset 中 并将
  • jquery Draggable & Droppable 获取源容器(draggable 来自)

    我为不同的答案做了这个 jsfiddle 我想知道如何获得可放置的源容器 http jsfiddle net d7wsz 8 jquery 是 Table1 tr not disabled Table2 tr not disabled Ta
  • 在 R、Rmd、knitr、bookdown 中打印 UTF-8 字符

    更新 2018 年 4 月 在不同的设置和计算机下 问题仍然存在 我相信它与所有 UNICODE UTF 8 字符有关 https www joelonsoftware com 2003 10 08 the absolute minimum