Author: Sagiru Mati
Date: 2022-04-28

# A Seamless Integration of Gretl and R

#### Sagiru Mati

#### 2022-04-28

# About gretlR

gretlR is an R package that can run `gretl` program from R Markdown.

# Installation

gretlR can be installed using the following commands in R.

    install.packages("gretlR")

              OR

    devtools::install_github('sagirumati/gretlR')

# Usage

Please load the gretlR package as follows:

    ```{r gretlR}
    library(gretlR)
    ```

Then create a chunk for `gretl` as shown below:

    ```{gretl gretlR,eval=T,echo=T,comment=NULL}
    nulldata 500
    set seed 13
    gretl1 = normal()
    gretl2 = normal()
    setobs 12 1980:01 --time-series
    gnuplot gretl1 --time-series --with-lines --output="line.png"
    gnuplot gretl2 gretl1 --output="scatter.png"
    ols gretl1 const gretl2
    modeltab add
    tabprint --output="olsTable.Rmd"
    tabprint --output="olsTable.tex"
    tabprint --output="olsTable.csv"
    eqnprint --output="olsEquation.tex"
    ```

The above chunk creates a gretl program with the chunk’s content, then automatically run the gretl script, which will save gretl outputs in the new folder `gretlR` created in the current working directory.

# include_graph function

We can dynamically and reproducibly fetch the `gretl` graph object we created with the `gretl` chunk using the following R chunk:

For the scatter graph:

    include_graph(chunk = "gretlR",graph = "scatter.png")

or the line graph:

    include_graph(chunk = "gretlR",graph = "line.png")

# include_tex function

we can also include the equation of the OLS generated by the `gretl` chunk and save as `olsEquation.tex`.

If the output is `pdf`, one can use the raw `LaTeX` codes as follows:

`\input{gretlR/gretlR/olsEquation.tex}`

Or use `include_tex` function to include the equation as shown below:

    include_tex(chunk = "gretlR",tex = "olsEquation")

    include_tex(chunk = "gretlR",tex = "olsTable",start = 7,end = 24)

The OLS table output is saved by the `gretl` chunk as `olsTable.Rmd`. The entire OLS table output can included as child document as follows:

    ```{r child, child='gretlR/gretlR/olsTable.Rmd'}

    ```

# import_kable function

The `gretl` chunk also saves the OSL table as `olsTable.csv`. The `import_kable` function can be used to import it as a table. further customisation can be done with `kableExtra` package.

    import_kable(chunk = "gretlR",file = "olsTable.csv",caption="Table generated from gretl
                 chunk", start=3,end=7,digits=2) %>%
    kableExtra::kable_styling(latex_options = c("basic","hold_position","scale_down")) %>%
     kableExtra::row_spec(0,bold=T)

# write_inp function

This function writes `gretl` file.

    code=r'(nulldata 500
    set seed 13
    gretl1 = normal()
    gretl2 = normal()
    setobs 12 1980:01 --time-series
    gnuplot gretl1 --time-series --with-lines --output="line.png"
    gnuplot gretl2 gretl1 --output="scatter.png"
    )'

    write_inp(code,path="gretlCodes")

# exec_inp function

This function executes existing `gretl` files.

    code=r'(nulldata 500
    set seed 13
    gretl1 = normal()
    gretl2 = normal()
    setobs 12 1980:01 --time-series
    gnuplot gretl1 --time-series --with-lines --output="line.png"
    gnuplot gretl2 gretl1 --output="scatter.png"
     )'
    write_inp(code,path="SomeFolder/gretlCodes")
    exec_inp("someFolder/gretlCodes")

# exec_gretl function

This function creates `gretl`file from R object or a set of character strings and executes it. It is a combination of `write_inp` and `exec_inp` functions.

    code=r'(nulldata 500
    set seed 13
    gretl1 = normal()
    gretl2 = normal()
    setobs 12 1980:01 --time-series
    gnuplot gretl1 --time-series --with-lines --output="line.png"
    gnuplot gretl2 gretl1 --output="scatter.png"
     )'
    exec_gretl(code)

# Demo

Demo can be accessed via `demo(package="gretlR")`.

    demo(exec_inp)
    demo(write_inp)
    demo(exec_gretl)

# R Markdown template

The R Markdown template for the `gretlR` can be accessed via `file -> New File -> R Markdown -> From Template -> gretlR`

Please download a set of example files from Github.