读取txt文件时出错:列表输入

时间:2016-08-10 20:33:57

标签: fortran fortran90

我有这段代码来读取Fortran保存的数值。该数据有4800行和19列。

此数据的头部如下所示

       1           2   1.50000000       0.00000000               1          21         240         361           2           0           0           0           0           0           0           0           0           0           0
       2           2   1.50000000       0.00000000               1          19         208         390           7           0           0           0           0           0           0           0           0           0           0
       3           2   1.50000000       0.00000000               1          13         181         419          11           0           0           0           0           0           0           0           0           0           0
       4           2   1.50000000       0.00000000               1          17         213         386           8           0           0           0           0           0           0           0           0           0           0
       5           2   1.50000000       0.00000000               1          18         215         389           2           0           0           0           0           0           0           0           0           0           0
       6           2   1.50000000       0.00000000               1          18         245         356           5           0           0           0           0           0           0           0           0           0           0
       7           2   1.50000000       0.00000000               1          17         205         395           7           0           0           0           0           0           0           0           0           0           0
       8           2   1.50000000       0.00000000               1          21         251         350           2           0           0           0           0           0           0           0           0           0           0
       9           2   1.50000000       0.00000000               1          17         207         385          15           0           0           0           0           0           0           0           0           0           0
      10           2   1.50000000       0.00000000               1          10         142         439          33           0           0           0           0           0           0           0           0           0           0
      11           2   1.50000000       0.00000000               1          19         249         353           3           0           0           0           0           0           0           0           0           0           0

列的名称是,sim,感染,beta,epsilon。其他15列“countt”只是模拟结果。我写了这段代码来读取F90中的数据。

    program read
    implicit none 
     integer, dimension(4800,15)::countt
     integer :: i
    integer ,dimension(4800)::sim, infected,id
    real,dimension(4800):: epsilon, beta

 open(unit = 2, file = '/Dropbox/epi_data.txt', status = 'old', action = 'read')
  do i = 1,4800
 read(2,*) sim(i), infected(i), beta(i), epsilon(i),  countt(i,:)

  print*,  sim(i), infected(i), beta(i), epsilon(i),  countt(i,:)
end do
  close(2)

  end program read

当我运行此代码时,我收到此错误“Fortran运行时错误:列表输入中项目3的错误整数 “

我在这里缺少什么?

我遇到的另一个问题是,如果我想将训练集保存100,我该怎么办。我的意思是,保存100行并跳过100,保存100并跳过100直到行结束? 所以在我的4800年结束时,我将获得2400训练集。

我是否需要上传此问题的数据?

2 个答案:

答案 0 :(得分:3)

您尝试在第三列中读取整数值(infected的类型为integer)。但是,1.50000000之类的格式不是整数(它们是实数)。因此错误。

您可能需要更改列的顺序或读取方式,即删除id(i),

答案 1 :(得分:0)

您必须重新格式化* .txt文件。

Fortran使用dot"。"作为十进制分隔,例如1.50000000是" 1.5",不是" 150000000"。