我有一个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
选项时遇到了一些困难。列未以正确的方式分配。
答案 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