2

R でいくつかの FORTRAN 出力ファイルを後処理する必要があります。たとえば、出力ファイルから 20 行を読み取り、スペースを無視する必要があります。次に、それらをベクトルまたは行列に変換します。スペースを無視して値を保持するより良い方法はあるのでしょうか? ありがとう!これが私の Out.txt ファイルです (必要なのは最後の 4 列だけです)。

 CNC HORIZON     COMPARTMENT      TOTAL      ADSORBED   DISSOLVED  GAS CONC.
 CNC                              (MG/KG)    (MG/KG)    (MG/L)     (MG/L)
 CNC --------------------------------------------------------------------------
 CNC
 CNC
 CNC   1            1             0.4062     0.3737      1.210     0.2419E-05
 CNC   1            2             0.4942     0.4547      1.472     0.2943E-05
 CNC   1            3             0.4930     0.4536      1.468     0.2936E-05
 CNC   1            4             0.4812     0.4427      1.433     0.2865E-05
 CNC   1            5             0.4682     0.4307      1.394     0.2788E-05
 CNC   1            6             0.4550     0.4186      1.355     0.2710E-05
 CNC   1            7             0.4418     0.4065      1.315     0.2631E-05
 CNC   1            8             0.4286     0.3944      1.276     0.2552E-05
 CNC   1            9             0.4154     0.3822      1.237     0.2474E-05
 CNC   1           10             0.4022     0.3701      1.198     0.2395E-05

以下は私のアプローチです:

TOT={}
file_out <- file(paste(pth,'/Out.txt', sep=""))
b=readLines(file_out)
dd=as.numeric(ldply(strsplit(b[88334],"   "))) # I have to adjust the amount of spaces in
                                               # order to separate numbers out
TOT[1]=dd[10]                                  # It is not always 10
4

1 に答える 1

1

列のラベルを変更してもかまわない場合、これは非常に簡単なread.tableの演習です。

b <- read.table("path/to/Out.txt",skip=5)

  V1 V2 V3     V4     V5    V6        V7
1  CNC  1  1 0.4062 0.3737 1.210 2.419e-06
2  CNC  1  2 0.4942 0.4547 1.472 2.943e-06
3  CNC  1  3 0.4930 0.4536 1.468 2.936e-06
4  CNC  1  4 0.4812 0.4427 1.433 2.865e-06
5  CNC  1  5 0.4682 0.4307 1.394 2.788e-06
6  CNC  1  6 0.4550 0.4186 1.355 2.710e-06
7  CNC  1  7 0.4418 0.4065 1.315 2.631e-06
8  CNC  1  8 0.4286 0.3944 1.276 2.552e-06
9  CNC  1  9 0.4154 0.3822 1.237 2.474e-06
10 CNC  1 10 0.4022 0.3701 1.198 2.395e-06
于 2012-10-23T18:56:36.750 に答える