【问题标题】:how to read text file into R如何将文本文件读入R
【发布时间】:2013-12-18 05:05:39
【问题描述】:

我在将文本文件读入 R 时遇到问题。该文本文件有 8 列和一个看起来完全像这样的标题:

ID          1990    1991    1992    1993    1994    1995    1996
A           36.88   45.48   52.46   111.31  138.45  121.09  122.62
B           19.11   27.97   37.14   47.68   60.78   35.84   38.64
C           56.21   74.94   92.3    118.62  138.13  104.65  113.98
D           30.48   51.54   61.57   99.87   80.9    84.97   99.34

当我执行以下操作时,我得到了错误

> extra<- read.table("extrab.txt", header=T, sep="\t")
Error in make.names(col.names, unique = TRUE) : 
  invalid multibyte string at '<ff><fe>I'

所以我尝试添加 fileEnconding

> extra<- read.table("extrab.txt", header=T, sep="\t", fileEncoding="UCS-2LE")

这行得通,但我最终得到了一个带有一个变量的数据框,其中 ID 到 1996 被视为一列。有没有办法解决这个问题?

我在这个问题上再添加几行,因为当我尝试通过 R 导入文件时发现了一个不同的错误

【问题讨论】:

    标签: r text


    【解决方案1】:

    根据这个SO 问题,您遇到的错误似乎与文件编码有关。

    选项 1:

    您可能只需要找出要使用的正确文件编码。

    例子:

    extra<- read.table("extrab.txt", header=T, sep="\t", fileEncoding="latin1")
    

    选项 2:

    您可以尝试在记事本/任何文本编辑器中打开文件,然后使用 ANSI、Unicode 或 UTF-8 等常见格式“另存为”。

    在 Windows 记事本中,请注意另存为时有一个“编码”下拉菜单。 ANSI 应该可以正常工作。

    【讨论】:

    • 它仍然困扰着我。我保存为 UTF-8 并执行了以下操作:extra
    • 只是一个想法...也许尝试通过导入文本向导导入 Excel,然后保存到 .csv
    • 我做到了,而且成功了!但是 UTF-8 格式在 excel 中不起作用,所以我必须先将文本文件保存为拉丁 1 格式。
    【解决方案2】:

    既然您没有遇到文件编码问题,可能只是您的分隔符实际上不是制表符。试试:

    extra<- read.table("extrab.txt", header=T, fileEncoding="UCS-2LE")
    

    这将在任何空白处分开

    【讨论】:

    • 试过了,它产生了一个不同的错误:扫描错误(文件,什么,nmax,sep,dec,quote,skip,nlines,na.strings,:第1行没有8个元素
    • count.fields("extrab.txt", fileEncoding="UCS-2LE") 的输出是什么?
    • 我收到警告消息:在 read.table("extrab.txt", header = TRUE, fileEncoding = "UCS-2LE") : readTableHeader 在 'extrab.txt' 上找到的最后一行不完整
    猜你喜欢
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2011-03-09
    • 2016-01-06
    • 2012-12-26
    相关资源
    最近更新 更多