useRs-

The output generated from a groundwater model post-processor contains
millions of lines of text.  Using the custom R function shown below, I can
quickly gather values from this file.

As you can see in the textConnection provided below (which is only a small
snippet from the file), the output is repetitive but does have some header
lines I hope to make use of to narrow the collected output.  The header
lines I'm speaking of are:
1) "     Flow Budget for Zone  1 at Time Step   1 of Stress Period   2"
2) "     Flow Budget for Zone  2 at Time Step   1 of Stress Period   2"
3) "     Flow Budget for Zone  3 at Time Step   1 of Stress Period   2"
4) "     Flow Budget for Zone  1 at Time Step   1 of Stress Period   3"
...

and so on for 111 different "zones" as well as 575 distinct "stress
periods".  In the custom function that follows, currently named "g", I can
collect all values of "Recharge".  If instead I want to restrict the
collected "Recharge" values to "Zone 2" for all 575 stress periods, is
there a way to first look for the header "Flow Budget for Zone  2", collect
only the next two values of Recharge, and then skip down to the next header
containing "Zone 2", collect 2 more values of "Recharge", and on like this
to the end?  'Peeling' out targeted flow budget terms will facilitate
generation of budget-specific plots through time.

The "edm" variable at the end of the R code that follows currently looks
like this:
edm
# [1] 1.28980e+05 0.00000e+00 *2.74161e-01* 0.00000e+00 8.10840e+04
0.00000e+00
# [7] 1.28980e+05 0.00000e+00 *2.74165e-01* 0.00000e+00 8.10840e+04
0.00000e+00

but with the proposed revision, which only collects Recharge values from
Zone 2, it would look like:
edm
# [1] *2.74161e-01* 0.00000e+00 *2.74165e-01* 0.00000e+00


txt_con<-textConnection(" mark_zone


     Flow Budget for Zone  1 at Time Step   1 of Stress Period   2
     -------------------------------------------------------------

                       Budget Term     Flow (L**3/T)
                       -----------------------------

             IN:
             ---
                           STORAGE =   0.37855E-02
                     CONSTANT HEAD =    0.0000
                          RECHARGE =   0.12898E+06
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone  16 to   1 =    0.0000
                   Zone  31 to   1 =    0.0000
                   Zone  40 to   1 =    0.0000
                   Zone  91 to   1 =    0.0000

                          Total IN =   0.12898E+06

             OUT:
             ----
                           STORAGE =   0.58275E-04
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    0.0000
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone   1 to  16 =    399.88
                   Zone   1 to  31 =    85204.
                   Zone   1 to  40 =    12404.
                   Zone   1 to  91 =    30968.

                         Total OUT =   0.12898E+06

                          IN - OUT =   0.14138E-03

               Percent Discrepancy =                0.00
1
 mark_zone


     Flow Budget for Zone  2 at Time Step   1 of Stress Period   2
     -------------------------------------------------------------

                       Budget Term     Flow (L**3/T)
                       -----------------------------

             IN:
             ---
                           STORAGE =   0.18833E-05
                     CONSTANT HEAD =    0.0000
                          RECHARGE =   0.274161E+06
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone  15 to   2 =    0.0000
                   Zone  31 to   2 =    0.0000
                   Zone  91 to   2 =    13134.

                          Total IN =   0.28729E+06

             OUT:
             ----
                           STORAGE =   0.10823E-04
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    0.0000
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone   2 to  15 =    6812.7
                   Zone   2 to  31 =   0.20820E+06
                   Zone   2 to  91 =    72274.

                         Total OUT =   0.28729E+06

                          IN - OUT =   0.58504E-02

               Percent Discrepancy =                0.00
1
 mark_zone


     Flow Budget for Zone  3 at Time Step   1 of Stress Period   2
     -------------------------------------------------------------

                       Budget Term     Flow (L**3/T)
                       -----------------------------

             IN:
             ---
                           STORAGE =   0.84894E-04
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    81084.
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone  31 to   3 =    0.0000
                   Zone  91 to   3 =    1234.9

                          Total IN =    82319.

             OUT:
             ----
                           STORAGE =    0.0000
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    0.0000
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone   3 to  31 =    53937.
                   Zone   3 to  91 =    28382.

                         Total OUT =    82319.

                          IN - OUT =   0.81732E-03

               Percent Discrepancy =                0.00
1
 mark_zone


     Flow Budget for Zone  1 at Time Step   1 of Stress Period   3
     -------------------------------------------------------------

                       Budget Term     Flow (L**3/T)
                       -----------------------------

             IN:
             ---
                           STORAGE =   0.15770E-04
                     CONSTANT HEAD =    0.0000
                          RECHARGE =   0.12898E+06
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone  16 to   1 =    0.0000
                   Zone  31 to   1 =    0.0000
                   Zone  40 to   1 =    0.0000
                   Zone  91 to   1 =    0.0000

                          Total IN =   0.12898E+06

             OUT:
             ----
                           STORAGE =   0.38262E-02
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    0.0000
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone   1 to  16 =    399.88
                   Zone   1 to  31 =    85214.
                   Zone   1 to  40 =    12405.
                   Zone   1 to  91 =    30958.

                         Total OUT =   0.12898E+06

                          IN - OUT =   0.88928E-03

               Percent Discrepancy =                0.00
1
 mark_zone


     Flow Budget for Zone  2 at Time Step   1 of Stress Period   3
     -------------------------------------------------------------

                       Budget Term     Flow (L**3/T)
                       -----------------------------

             IN:
             ---
                           STORAGE =    0.0000
                     CONSTANT HEAD =    0.0000
                          RECHARGE =   0.274165E+06
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone  15 to   2 =    0.0000
                   Zone  31 to   2 =    0.0000
                   Zone  91 to   2 =    13215.

                          Total IN =   0.28737E+06

             OUT:
             ----
                           STORAGE =   0.27267E-02
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    0.0000
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone   2 to  15 =    6813.6
                   Zone   2 to  31 =   0.20827E+06
                   Zone   2 to  91 =    72291.

                         Total OUT =   0.28737E+06

                          IN - OUT =   0.69125E-03

               Percent Discrepancy =                0.00
1
 mark_zone


     Flow Budget for Zone  3 at Time Step   1 of Stress Period   3
     -------------------------------------------------------------

                       Budget Term     Flow (L**3/T)
                       -----------------------------

             IN:
             ---
                           STORAGE =    0.0000
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    81084.
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone  31 to   3 =    0.0000
                   Zone  91 to   3 =    1262.7

                          Total IN =    82346.

             OUT:
             ----
                           STORAGE =   0.18113E-03
                     CONSTANT HEAD =    0.0000
                          RECHARGE =    0.0000
                    STREAM LEAKAGE =    0.0000
                     LAKE  SEEPAGE =    0.0000
                            UZF ET =    0.0000
                             GW ET =    0.0000
                      UZF INFILTR. =    0.0000
                  SFR-DIV. INFLTR. =    0.0000
                      UZF RECHARGE =    0.0000
                   SURFACE LEAKAGE =    0.0000
                   Zone   3 to  31 =    53843.
                   Zone   3 to  91 =    28503.

                         Total OUT =    82346.

                          IN - OUT =  -0.14018E-02

               Percent Discrepancy =                0.00
")


g<-function(txt_con, string, from, to, ...) {
        L <- readLines(txt_con)
        matched <- grep(string, L, value = TRUE, ...)
        as.numeric(substring(matched, from, to))
}

#Now, strip out values
edm<-g(txt_con, "  RECHARGE =", 37, 50)

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to