无法将数据集读入R中

时间:2011-12-02 06:03:47

标签: file r

我是R的新手,我正在尝试阅读数据集。数据集在这里:

http://petitlien.fr/myfiles

(以上链接将扩展为GMX文件存储文件夹链接,然后单击访客访问权限以检索文件。)

名为mydata.log的文件有32个没有标题的条目,它由2个由空格分隔的列组成。

我正在尝试强大的命令scan

test.frame<-scan(file="mydata.log",sep= "", nlines=32,blank.lines.skip=TRUE)

以上只读了前3行:

head(test.frame)
[1]   0.0000   0.0000 144.3210   0.3400 159.4070   0.8925

我也试过read.table

test.frame<-read.table(file="mydata.log",sep= "", nrows=32,blank.lines.skip=TRUE)

这个只读取前6行,如下所示:

names(test.frame)
[1] "V1" "V2"
> head(test.frame)
   V1     V2
1   0.000 0.0000
2 144.321 0.3400
3 159.407 0.8925
4 198.413 0.9450
5 222.557 0.9975
6 235.464 1.0500

有人知道如何正确阅读此数据集吗?

一个相关问题:我可以控制正在读取的数据中的有效位数或小数位吗?

非常感谢...

2 个答案:

答案 0 :(得分:2)

这段代码完美无缺:

test.frame<-read.table(file="mydata.log",sep= "", nrows=32,blank.lines.skip=TRUE)

您输出中只有6行的原因是因为您使用的是head。要查看所有行,只需输入对象的名称:

> test.frame
           V1     V2
1       0.000 0.0000
2     144.321 0.3400
3     159.407 0.8925
4     198.413 0.9450
5     222.557 0.9975
6     235.464 1.0500
7     296.918 1.1025
8     346.773 1.1550
9     442.955 1.2075
10    694.879 1.2600
11    892.436 1.3125
12   1492.970 1.3650
13   2916.960 1.4175
14   3596.060 1.4700
15   5278.950 1.5225
16   7480.730 1.5750
17  12259.800 1.6275
18  14032.600 1.6800
19  19565.600 1.7325
20  31427.700 1.7850
21  58221.400 1.8375
22  92283.900 1.9900
23 165601.000 1.9425
24 165703.000 1.9950
25 213925.000 2.8750
26 260381.000 2.1000
27 312701.000 2.1525
28 370853.000 2.2050
29 479303.000 2.2575
30 487265.000 2.3100
31 545225.000 2.3625
32 703186.000 2.4150

这是一种简单的方法,可以查看您拥有多少行(当您有许多观察时很有用):

  

nrow(test.frame)       [1] 32

有关位数,请参阅round命令。要查看命令的文档,请输入?然后输入命令,在本例中为函数:?round

#note that you do not have to put "digits=2", you can just put "2", but this way is clearer
> rounded_test.frame <- round(test.frame, digits=2)
> rounded_test.frame
          V1   V2
1       0.00 0.00
2     144.32 0.34
3     159.41 0.89
4     198.41 0.94
5     222.56 1.00
6     235.46 1.05
7     296.92 1.10
8     346.77 1.16
9     442.95 1.21
10    694.88 1.26
11    892.44 1.31
12   1492.97 1.36
13   2916.96 1.42
14   3596.06 1.47
15   5278.95 1.52
16   7480.73 1.57
17  12259.80 1.63
18  14032.60 1.68
19  19565.60 1.73
20  31427.70 1.78
21  58221.40 1.84
22  92283.90 1.99
23 165601.00 1.94
24 165703.00 2.00
25 213925.00 2.88
26 260381.00 2.10
27 312701.00 2.15
28 370853.00 2.21
29 479303.00 2.26
30 487265.00 2.31
31 545225.00 2.36
32 703186.00 2.42

请注意,在上面我创建了一个新对象,而不是替换当前的对象。如果你想要替换当前的数据并永远丢失数据(当然你要重新加载数据集!),那么你可以改用这一行:

test.frame <- round(test.frame, digits=2)

如果你真的不想压缩你的数字,你可能只对查看舍入数字感兴趣。您可以执行以下命令:

print(test.frame,digits=2)

答案 1 :(得分:1)

而不是建议的nrow(),我建议str()(“结构”)为您提供有关数据集(变量类等)的更多有用信息。它也有点神秘......:)