使用read.table导入数据集,其中数据不均匀

时间:2016-07-02 17:19:55

标签: r file import read.table

我从MASS获取了mtcars数据集并进行了一些修改。从一个包到另一个包后,我终于将数据输入记事本,我仔细确定空格是分隔符。我的问题是这样创建的文件不能读入。我有一个读入的测试文件。

您能解释一下错误消息告诉我的内容吗?谢谢。使用的错误消息和代码如下所示。

TEST.txt
120 140 7.5
140 150 8.5

mtcars2=read.table(file="TEST.txt",header=FALSE)
mtcars2
#    V1  V2  V3
# 1 120 140 7.5
# 2 140 150 8.5  OK

mtcars2.txt问题数据集

160 110 2.62
160 110 2.875
160 110 2.32
160 110 3.215
160 115 3.44

mtcars2=read.table("c:\\data\\mtcars2.txt",header=FALSE)
  

警告消息:1:在read.table(“c:\ data \ mtcars2.txt”中,header =   FALSE):第1行似乎包含嵌入的空值... 6:In   scan(file = file,what = what,sep = sep,quote = quote,dec = dec,:   在输入中找到的嵌入式nul

我也尝试了以下内容:

mtcars2=read.table("c:\\data\\mtcars2.txt",fill=T,header=FALSE)

2 个答案:

答案 0 :(得分:1)

我使用剪切/粘贴,它工作正常。然后我在第一个空格之前放了一个null,然后我得到了:

line 1 appears to contain embedded nulls.  

我怀疑您修改了文件,使得输出的值与'c' strings一样,终止为零;或者Unicode (16 bit)也会给它带来麻烦,因为它有零 检查文件中每个字节的内容可以做的一件事是使用UNIX / Linux od程序:

od -c filename  

示例输出:

0000000000     1   6  \0  \0       1   1  \0       2   .   6   2  \r  \n   1
0000000020     6  \0       1   1  \0       2   .   8   7   5  \r  \n   1   6
0000000040    \0       1   1  \0       2   .   3   2  \r  \n   1   6  \0

答案 1 :(得分:0)

> dss <- read.table(header=TRUE, text='
+ 160    110    2.62
+ 160    110    2.875
+ 160    110    2.32
+ 160    110    3.215
+ 160    115    3.44
+ ')
> dss
  X160 X110 X2.62
1  160  110 2.875
2  160  110 2.320
3  160  110 3.215
4  160  115 3.440
> 

header = TRUE可能会被移除。