2012-04-23 74 views
1

我有像以下的数据集:R“每个文件多个数据集”

 
0 0 0 
0 0 0 


54077 184965 81.25 
54266 184776 81.25 


65130 199986 82.1705426356589 
65513 199600 82.1705426356589 

那些数据是由2个空白行分隔。所以当我使用gnuplot绘制一个点图时,他们会认为这些是在一个文件中分离的数据。如何在R中做同样的事情?因为对于每个这样的数据集,我将有两个点通过线连接。 (例如,[5077,184965]连接到[54266,199600])

比你非常!

回答

1

您也可以读取文件到内存中,

> buffer <- readLines ("tmp/file") 
> buffer 
[1] "0 0 0"       "0 0 0"       
[3] ""        ""        
[5] "54077 184965 81.25"   "54266 184776 81.25"   
[7] ""        ""        
[9] "65130 199986 82.1705426356589" "65513 199600 82.1705426356589" 

删除或进程(例如,得出测量次数,数据集名,...),不知怎的,不属于与数据表文件的一部分的所有行:

> buffer <- buffer [nzchar (buffer) > 0L] 
> buffer 
[1] "0 0 0"       "0 0 0"       
[3] "54077 184965 81.25"   "54266 184776 81.25"   
[5] "65130 199986 82.1705426356589" "65513 199600 82.1705426356589" 

最后使用read.table上的修改缓冲区:

> read.table (textConnection (buffer)) 
    V1  V2  V3 
1  0  0 0.00000 
2  0  0 0.00000 
3 54077 184965 81.25000 
4 54266 184776 81.25000 
5 65130 199986 82.17054 
6 65513 199600 82.17054 
+0

谢谢!这是工作。 – boyang 2012-04-27 15:03:57

2

两个想法:

  1. 如果他们都在相同的格式,然后read.table/read.csvblank.lines.skip参数设置为FALSE,而不是它的默认TRUE。然后你得到一个data.frame,里面有空行,你可以分割。

  2. 如果它们不是全部格式相同,则可以使用这些相同命令的skip参数来仅拉出输入文件的某些行。

2

最坏的情况,则必须之前使用readlines方法,其中n = 1至一次读取一条线,与strsplit分裂,并收集每个数据列表中的设定,想要的分离器(空行)开始列表的新元素。

但是你只需要做,如果GSK3的解决方案失败,因为你的数据集是更非结构化有点...