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

问题描述 投票:0回答:2

我从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:在扫描中(file = file,what = what,sep = sep,quote = quote,dec = dec,:在输入中找到的嵌入式nul不正常

我也尝试过以下方法:

mtcars2=read.table("c:\\data\\mtcars2.txt",fill=T,header=FALSE)
r file import read.table
2个回答
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

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可能会被删除。

© www.soinside.com 2019 - 2024. All rights reserved.