A Seamless Integration of Gretl and R
Sagiru Mati (PhD)
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 gretlfile 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.