【问题标题】:Reading scandinavian letters correctly into a data frame将斯堪的纳维亚字母正确读取到数据框中
【发布时间】:2012-03-29 20:02:55
【问题描述】:

当我尝试使用 read.table() 命令将包含斯堪的纳维亚字母的逗号分隔值文件读入 r 中的数据框时,结果不正确。也就是说,我希望正确包含“å”、“æ”、“ø”、“ä”和“ö”等字母。目前,它们以非字母符号表示,并且经常引起其他操作(例如绘图)的抱怨。

我将我的 csv 文件保存在 the ordinary text editor in OS X 中,但我也尝试过使用 TextWrangler,将我的文件保存为特定格式,例如 UTF-8 和 UTF-16,然后在其中指定我的编码带有"encoding=" 选项的read.table() 命令。

将斯堪的纳维亚字母从 csv 文件导入数据框的最小示例是什么样的?

【问题讨论】:

    标签: r unicode encoding locale


    【解决方案1】:

    我也有这个问题,好心人教我怎么做:

    使用来自“readr”的read_delim 有效:

    metadata2 <- read_delim(filename,locale=locale(encoding="latin))
    

    名称为“文件名”的文件包含斯堪的纳维亚字符。在 metadata2 中看到的字符不再有闪烁的问号!

    【讨论】:

      【解决方案2】:

      您需要包含有关您所在地区的更多详细信息,并且您需要将样本放在人们可以获取的位置。目前我的 Mac 似乎可以正确读取字符(而且我不在甚至需要它的语言环境中):

      > read.table(text='"å", "æ", "ø", "ä"', sep=",")
        V1 V2 V3 V4
      1  å  æ  ø  ä
      > Sys.getlocale()
      [1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
      

      (我还使用 TextEdit.app 创建了一个文件,它也可以正确读取。它们在绘图中正确显示。)您可以尝试使用 fileEncoding 参数指定输入编码:

      > read.table(text='"å", "æ", "ø", "ä"', sep=",", fileEncoding="UTF-8")
        V1 V2 V3 V4
      1  å  æ  ø  ä
      

      ...这对我没有任何作用,但是如果您的语言环境设置为“C”,这对于某些使用 Mac 的人来说似乎没有充分的理由发生。如果只对 read.table 使用 'encoding' 参数,它在输入阶段什么也不做,只是为读取操作的结果分配一个属性。

      【讨论】:

        猜你喜欢
        • 2018-11-14
        • 2014-11-03
        • 2014-06-10
        • 2018-08-14
        • 1970-01-01
        • 2013-04-14
        • 2016-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多