Integración de tablas de Org con R en emacs
Integración de tablas de Org con R en emacs
Para integrar tablas de Org con programación de R dentro del entorno de emacs definimos una tabla en Org y la llamamos en el bloque de programación de R.
En propiedades generales del documento, especifico lo siguiente:
#+PROPERTY: header-args:R :results output :exports both :session :eval yes
Luego defino una tabla de datos con un nombre propio. En este caso se llama amount
.
#+NAME:amount | date | amount | |------------+--------| | 2022-01-30 | 55.1 | | 2022-01-31 | 54.7 | | 2022-02-01 | 54.5 | | 2022-02-02 | 55.1 | | 2022-02-03 | 54.2 | | 2022-02-04 | 54.1 | | 2022-02-05 | 53.9 | | 2022-02-06 | 54.1 |
En el código de programación debemos definir la variable tabla con el nombre de la tabla de datos.
#+begin_src R :var tabla=amount tabla[, 2] <-tabla[, 2] /100 class(tabla) tabla #+end_src
[1] "data.frame" date amount 1 2022-01-30 0.551 2 2022-01-31 0.547 3 2022-02-01 0.545 4 2022-02-02 0.551 5 2022-02-03 0.542 6 2022-02-04 0.541 7 2022-02-05 0.539 8 2022-02-06 0.541
Si queremos la tabla tal cual para manejarla en Org, ponemos las opciones :results value :colnames yes
#+name: cabecera #+begin_src R :results value :colnames yes head(iris) #+end_src
#+RESULTS: cabecera | Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species | |--------------+-------------+--------------+-------------+---------| | 5.1 | 3.5 | 1.4 | 0.2 | setosa | | 4.9 | 3 | 1.4 | 0.2 | setosa | | 4.7 | 3.2 | 1.3 | 0.2 | setosa | | 4.6 | 3.1 | 1.5 | 0.2 | setosa | | 5 | 3.6 | 1.4 | 0.2 | setosa | | 5.4 | 3.9 | 1.7 | 0.4 | setosa |
Ahora la exportamos en formato bonito. Redondeamos a dos decimales y la sacamos en formato Org table.
#+begin_src R library(orgutils) library(data.table) dt <- as.data.table(tabla) ## Redondeamos a dos decimales las columnas numéricas dt[, (names(dt)[sapply(dt, is.numeric)]) := lapply(.SD, round, 2), .SDcols = sapply(dt, is.numeric)] orgtxt <- toOrg(data.frame(dt)) ##writeLines(orgtxt, con = fichero) # Para escribir en un fichero externo orgtxt #+end_src
| date | amount | |------------+--------| | 2022-01-30 | 0.55 | | 2022-01-31 | 0.55 | | 2022-02-01 | 0.54 | | 2022-02-02 | 0.55 | | 2022-02-03 | 0.54 | | 2022-02-04 | 0.54 | | 2022-02-05 | 0.54 | | 2022-02-06 | 0.54 |
#+begin_src R :var tabla=particiones241201 :results value :colnames yes head(iris) #+end_src