EviewsR: A Seamless Integration of Eviews and R

Sagiru Mati, PhD

Saturday: August 20, 2022

CRAN_Status_Badge CRAN_Status_Badge R-CMD-check

1 About the Author

The author of this package, Sagiru Mati, obtained his PhD in Economics from the Near East University, North Cyprus. He works at the Department of Economics, Yusuf Maitama Sule (Northwest) University, Kano, Nigeria. Please visit his website for more details.

Please follow his publications on ORCID: 0000-0003-1413-3974

2 About EviewsR

EviewsR is an R package that can run EViews program in R. It also adds eviews as a knit-engine to knitr package, so that users can embed EViews codes in R Markdown and Quarto document.

3 Why EviewsR?

While the ecosystem of R is great, it cannot run EViews codes, not talk of handling EViews objects dynamically and reproducibly. Even though, EViews can communicate with R, users still need to switch to type-setting application to embed the EViews outputs. Specifically:

4 Installation

EviewsR can be installed using the following commands in R.




5 Setup

To run the package successfully, you need to do one of the following

set_eviews_path("C:/Program Files (x86)/EViews 10/EViews10.exe")

6 Usage

Please load the EviewsR package as follows:

```{r}                                                                .

7 Ways to use EviewsR

The package can work with base R, R Markdown or Quarto document.

7.1 EviewsR along with R Markdown or Quarto document

After loading the package, a chunk for Eviews can be created by supplying eviews as the engine name in R Markdown or Quarto document as shown below :

    'This program is created in R Markdown with the help of EviewsR package
  wfcreate(page=EviewsRPage,wf=EviewsR_workfile) m 2000 2022
  for %y EviewsR package page1 page2
  pagecreate(page={%y}) EviewsR m 2000 2022
  pageselect EviewsRPage
  rndseed 123456
  genr y=@cumsum(nrnd)
  genr x=@cumsum(nrnd)
  equation ols.ls y c x
  freeze(OLSTable,mode=overwrite) ols
  freeze(EviewsR_Plot,mode=overwrite) y.line
  wfsave EviewsR_workfile
EViews graphs imported automatically by fig-EviewsR chunkEViews graphs imported automatically by fig-EviewsR chunk

Figure 7.1: EViews graphs imported automatically by fig-EviewsR chunk

The above chunk creates an Eviews program with the chunk’s content, then automatically open Eviews and run the program, which will create an Eviews workfile with pages containing monthly sample from 2000 to 2022. The program will also save an EViews workfile named EviewsR_workfile in the current directory.

The eviews chunk automatically returns the outputs of each equation object as a dataframe, accessible via chunkLabel$pageName_equationName. For example, The R2 of the ols equation object is 0.044951, which can be accessed using `r EviewsR$eviewsrpage_ols$r2`. We can obtain the table object by chunkLabel$pageName_tableName. Therefore, EviewsR$eviewsrpage_olstable will give us the OLSTable object as dataframe. Note the underscore (_) between the pageName and equationName, and between the pageName and tableName.

#> [1] 0.044951
#> [1] 4.310163
K = EviewsR$eviewsrpage_olstable[c(6, 8, 9), 1:5]
colnames(K) = NULL
knitr::kable(K, row.names = F, caption = "Selected cells of  EViews table object")
Table 7.1: Selected cells of EViews table object
Variable Coefficient Std. Error t-Statistic Prob.
C -0.301413 0.260956 -1.155033 0.2491
X -0.051410 0.014316 -3.591137 0.0004

Table 7.1: Selected cells of EViews table object

The EViews series objects are also imported automatically as dataframe (by default) or xts objects (if we use chunk option class="xts"). They are accessed via chunkLabel$pageName.

EviewsR$eviewsrpage %>%
#>         date           x          y
#> 1 2000-01-01 -0.06062345 0.34705763
#> 2 2000-02-01  0.40287977 0.04959103
#> 3 2000-03-01  1.13387526 0.56589164
#> 4 2000-04-01  1.34089330 1.35264827
#> 5 2000-05-01  0.54596099 1.05434874
#> 6 2000-06-01  0.96869514 0.61693341

7.2 EviewsR along with base R

7.2.1 The create_object() function

The function create_object() can be used to create an Eviews object in the existing EViews workfile.

create_object(wf = "EviewsR_workfile", action = "equation", action_opt = "",
    object_name = "eviews_equation", view_or_proc = "ls", options_list = "",
    arg_list = "y ar(1)")

create_object(wf = "EviewsR_workfile", object_name = "x1", object_type = "series",
    expression = "y^2")

7.2.2 The eviews_graph() function

EViews graphs can be included in R Markdown or Quarto document by eviews_graph() function.

To create graph from existing EViews series objects:

eviews_graph(wf = "EviewsR_workfile", page = "EviewsRPage", series = "x y",
    mode = "overwrite", graph_procs = "setelem(1) lcolor(red) lwidth(4)",
    graph_options = "m")
Graphs of existing EViews series objects imported by fig-eviewsGraph chunkGraphs of existing EViews series objects imported by fig-eviewsGraph chunk

Figure 7.2: Graphs of existing EViews series objects imported by fig-eviewsGraph chunk

We can also create graph objects from an R dataframe

Data = data.frame(x = cumsum(rnorm(100)), y = cumsum(rnorm(100)))
eviews_graph(series = Data, group = TRUE, start_date = "1990Q4",
    frequency = "Q")
Graphs of an R dataframe imported by fig-eviewsGraph1 chunk

Figure 7.3: Graphs of an R dataframe imported by fig-eviewsGraph1 chunk

To plot a scatter graph and histogram on the same frame:

eviews_graph(wf = "EviewsR_workfile", page = "EviewsRPage", series = "x y",
    group = T, graph_command = "scat(ab=histogram) linefit()",
    mode = "overwrite", graph_procs = "setelem(1) lcolor(green) lwidth(2)")
Scatter graph along with histogram

Figure 7.4: Scatter graph along with histogram

7.2.3 The eviews_import() function

Data can be imported from external sources by eviews_import() function.

eviews_import(source_description = "eviews_import.csv", start_date = "1990",
    frequency = "m", rename_string = "x ab", smpl_string = "1990m10 1992m10")

Alternatively, use the dataframe as the source_description.

eviews_import(source_description = Data, wf = "eviews_import1",
    start_date = "1990", frequency = "m", rename_string = "x ab",
    smpl_string = "1990m10 1992m10")

7.2.4 The eviews_pagesave() function

Similar to Eviews workfile, an Eviews page can be saved in various formats by eviews_pagesave() function.

eviews_pagesave(wf = "eviewsr_workfile", page = "EviewsRPage",
    source_description = "pagesave.csv", drop_list = "y")

7.2.5 The eviews_wfcreate() function

An Eviews workfile can be created using eviews_wfcreate() function in R.

eviews_wfcreate(wf = "eviews_wfcreate", page = "EviewsRPage",
    frequency = "m", start_date = "1990", end_date = "2022")

Create a workfile from a dataframe

eviews_wfcreate(source_description = Data, wf = "eviews_wfcreate1",
    page = "EviewsR_page", frequency = "m", start_date = "1990")

7.2.6 The eviews_wfsave() function

An EViews workfile can be saved various output formats using eviews_wfsave() in function in R.

eviews_wfsave(wf = "eviewsr_workfile", source_description = "wfsave.csv")

7.2.7 The exec_commands() function

A set of Eviews commands can be executed with the help of exec_commands() function in R.

exec_commands(c("wfcreate(wf=exec_commands,page=eviewsPage) m 2000 2022"))

eviewsCommands = "pagecreate(page=eviewspage1) 7 2020 2022
for %page eviewspage eviewspage1
pageselect {%page}
genr y=@cumsum(nrnd)
genr x=@cumsum(nrnd)
equation ols.ls y c x
graph x_graph.line x
graph y_graph.area y
freeze(OLSTable,mode=overwrite) ols
exec_commands(commands = eviewsCommands, wf = "exec_commands")

7.2.8 The export_dataframe() function

Use export_dataframe() function to export dataframe object to Eviews.

export_dataframe(wf = "export_dataframe", source_description = Data,
    start_date = "1990", frequency = "m")

7.2.9 The import_equation() function

Import EViews equation data members into R, R Markdown or Quarto.

import_equation(wf = "EviewsR_workfile", page = "EviewsRPage",
    equation = "OLS")

To access the imported equation in base R:

7.2.10 The import_graph() function

Import EViews graph objects(s) into R, R Markdown or Quarto.

import_graph(wf = "eviewsr_workfile")
EViews graphs imported using import\_graph() functionEViews graphs imported using import\_graph() function

Figure 7.4: EViews graphs imported using import_graph() function

To import only graphs that begin with x:

import_graph(wf = "exec_commands", graph = "x*")
EViews graphs that begin with X imported using import\_graph() function