1

我有一个具有以下格式的 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 表示文件中的组数(在本例中为两组:第一个全为零,第二个全为一)。每组由 4 个包含三个值的子组组成(第一行两个,下一行一个)。

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

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

4

1 回答 1

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
于 2013-04-19T08:54:29.367 回答