如何阅读R中的特定ascii格式

时间:2013-04-19 08:45:28

标签: r ascii

我有一个ascii文件,其格式如下:

  4 3 2 
 0.00 0.00 
 0.00
 0.00 0.00 
 0.00
 0.00 0.00 
 0.00
 0.00 0.00 
 0.00
 1.00 1.00
 1.00 
 1.00 1.00
 1.00
 1.00 1.00
 1.00
 1.00 1.00
 1.00

第一行(4 3 2)是标题。数字2表示文件中的组数(在这种情况下是两组:第一组全部为零,第二组全部为1)。 每组由4个子组组成,每组有三个值(第一行有两个,下一行有一个)。

我想以这样的方式阅读这样一个文件:4代表列数,3代表矩阵的行数或者我可以用filled.contour的东西,同时保留两个子组分开(不同factor)。

我正在尝试使用read.fwf函数执行此操作,但在尝试指定widths选项时遇到了一些困难。列未以正确的方式分配。

1 个答案:

答案 0 :(得分:2)

您可以在此处使用scan,并使用标题行创建正确的矩阵:

text <- ' 4 3 2 
 0.00 0.00 
 0.00
 0.00 0.00 
 0.00
 0.00 0.00 
 0.00
 0.00 0.00 
 0.00
 1.00 1.00
 1.00 
 1.00 1.00
 1.00
 1.00 1.00
 1.00
 1.00 1.00
 1.00'
dd <- scan(textConnection(text))
matrix(dd[-c(1:3)],ncol=dd[1],nrow=dd[2]*dd[3],byrow=TRUE)

     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    0    0    0    0
[4,]    1    1    1    1
[5,]    1    1    1    1
[6,]    1    1    1    1