在R中读取数据集时遇到麻烦



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

http://petitlien.fr/myfiles

(上面的链接将展开为一个GMX文件存储文件夹链接,并单击Guest访问来检索文件)

名为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

有人知道如何正确读取这个数据集吗?

一个相关的问题:我能控制被读入的数据中有效数字或小数位数的数量吗?

这行代码工作得很好:

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)

不推荐nrow(),我推荐str() ("structure"),它能给你更多关于数据集(变量类等)的有用信息。它也不那么神秘....:)

最新更新