当前位置:  开发笔记 > 运维 > 正文

用不同的编码读取Rdata文件

如何解决《用不同的编码读取Rdata文件》经验,为你挑选了1个好方法。

我有一个.RData文件可以在我的Linux(UTF-8)机器上读取,但我知道该文件是在Latin1中,因为我自己在Windows上创建了它们.不幸的是,我无法访问原始文件或Windows机器,我需要在我的Linux机器上读取这些文件.

要读取Rdata文件,通常的过程是运行load("file.Rdata").诸如read.csv有一个encoding参数的函数可以用来解决这类问题,但load没有这样的东西.如果我尝试load("file.Rdata", encoding = latin1),我只是得到这个(预期)错误:

加载错误("file.Rdata",encoding ="latin1"):unused argument(encoding ="latin1")

我还可以做些什么?我的文件加载了包含重音的文本变量,这些重音在UTF-8环境中打开时会被破坏.



1> Waldir Leonc..:

感谢42的评论,我设法编写了一个函数来重新编码文件:

fix.encoding <- function(df, originalEncoding = "latin1") {
  numCols <- ncol(df)
  for (col in 1:numCols) Encoding(df[, col]) <- originalEncoding
  return(df)
}

这里的内容是命令Encoding(df[, col]) <- "latin1",该命令获取col数据帧的列df并将其转换为latin1格式。不幸的是,Encoding仅将列对象作为输入,因此我不得不创建一个函数来清除数据框对象的所有列并应用转换。

当然,如果您的问题仅存在于两列中,则最好只将Encoding应用于这些列而不是整个数据框(您可以修改上面的函数以将一组列作为输入)。另外,如果您遇到相反的问题,即将在Linux或Mac OS中创建的R对象读入Windows,则应使用originalEncoding = "UTF-8"

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有