close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Initial Version and Version 1 of tolRlink


Ignore:
Timestamp:
Feb 3, 2016, 11:37:18 AM (9 years ago)
Author:
Pedro Gea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • tolRlink

    v1 v1  
     1= tolRlink =
     2
     3== Introducción ==
     4
     5{{{tolRlink}}} es uno de los paquetes para R desarrollados para la integración con TOL. Véase [wiki:Rprojects].
     6
     7{{{tolRlink}}} es el paquete encargado de conectar con el núcleo de TOL. El enlace lo hace a través de la librería {{{tolRlink.dll}}} (o {{{tolRlink.so}}}).
     8
     9Necesita por tanto de una instalación de TOL compatible con R.
     10
     11Dispone de métodos para cargar y descargar la dll, iniciar y cerrar la sesión TOL, compilar código en el núcleo de TOL, obtener en R objetos de TOL, trasladar objetos de R hacia TOL, etc.
     12
     13== Conexión con TOL ==
     14
     15El paquete {{{tolRlink}}} en R permite la conexión con TOL, para ello ha de existir una instalación de TOL compatible cuyo directorio principal se encuentre apuntado por la variable de entorno {{{TOLGNU_ROOT}}}. Esta variable se creará durante el proceso de instalación de TOL.
     16
     17Durante el proceso de carga en R, el paquete intentará localizar la instalación de TOL, y en caso de encontrarla emitirá el siguiente mensaje: {{{TOL-GNU was correctly found.}}}.
     18
     19Una vez cargado el paquete {{{tolRlink}}} en R disponemos de diferentes funciones para cargar o descargar la librería (.dll o .so) e inicializar o salir de TOL:
     20 * tolLoad
     21 * tolUnload
     22 * tolIsLoaded
     23 * tolInit
     24 * tolExit
     25 * tolReinit
     26 * tolIsInitialized
     27
     28Las diferentes llamadas en este paquete desencadenan las correspondientes llamadas para su adecuado funcionamiento, así pues, la llamada a {{{tolInit}}} basta para inicializar TOL, ya que la librería ser cargará automáticamente si no estuviera hecho:
     29
     30{{{
     31#!ruby
     32tolInit() # llama a tolLoad() automáticamente
     33}}}
     34
     35== Comunicación con TOL ==
     36
     37Para la comunicación con TOL disponemos de diferentes funciones que nos permiten interaccionar con las variables y las funciones de TOL:
     38 * tolGet
     39 * tolRefer
     40 * tolExecute
     41 * tolDeclare
     42
     43Mientras {{{tolGet}}} nos permite obtener el valor de una variable en TOL, {{{tolRefer}}} nos permite referirnos a ella sin traer su valor hasta R.
     44
     45De modo similar {{{tolExecute}}} nos permite ejecutar una función en TOL, mientras que {{{tolDeclare}}} nos permite preparar la expresión para su ejecución sin hacerlo.
     46
     47Ejemplos:
     48
     49{{{
     50#!ruby
     51# Obtener un valor de TOL
     52tolGet("Time") #warning
     53tolGet("Time", grammar="Text")
     54}}}
     55
     56{{{
     57#!ruby
     58# Llamar a una función de TOL
     59tolExecute("Sin", 3)
     60tolExecute("TextLength", "Texto")
     61# Con varios argumentos
     62tolExecute("TextSub", "Texto", 2, -2)
     63}}}
     64
     65{{{
     66#!ruby
     67# Encadenar llamadas
     68tolExecute("Sin", tolExecute("Sin", 3)) # 2 llamadas
     69tolExecute("Sin", tolDeclare("Sin", 3)) # 1 llamada
     70}}}
     71
     72{{{
     73#!ruby
     74# Usar variables de TOL
     75tolExecute("Sin", tolGet("Pi")) # 2 llamadas
     76tolExecute("Sin", tolRefer("Pi")) # 1 llamada
     77}}}
     78
     79Las funciones en TOL pueden ser usadas como variables, para hacer esto en R usaremos {{{tolExecute}}} o {{{tolDeclare}}} con un sólo argumento:
     80
     81{{{
     82#!ruby
     83# Usar un Code como variable
     84tolExecute("CodeGrammar", tolDeclare("Sin")) #warning
     85# Obtener el Code para una gramática dada
     86tolExecute("Sin", grammar="Real")
     87}}}
     88
     89Las funciones {{{tolExecute}}} y {{{tolDeclare}}} también pueden usarse con operadores:
     90
     91{{{
     92#!ruby
     93# Usar operadores
     94tolExecute("-", 2) # monario
     95tolExecute("-", 2, 1) # binario
     96tolExecute("-", 10, 2, 1) # binario
     97}}}
     98
     99== Correspondencias de las variables de TOL ==
     100
     101Los tipos de variables de TOL (gramáticas) se hacen corresponder con distintos tipos o clases en R.
     102A continuación indicamos en una tabla estas correspondencias:
     103
     104|| '''Grammar'''  || '''R class''' || '''R package''' ||
     105|| {{{Real}}} || {{{numeric}}} || base ||
     106|| {{{Text}}} || {{{character}}} || base ||
     107|| {{{Date}}} || {{{Date}}}, {{{POSIXt}}} || base ||
     108|| {{{Matrix}}} || {{{matrix}}} || base ||
     109|| {{{TimeSet}}} || {{{Dating}}} || tolBasis ||
     110|| {{{Serie}}} || {{{Serie}}} || tolBasis ||
     111|| {{{Polyn}}} || {{{Polyn}}} || tolBasis ||
     112|| {{{Ratio}}} || {{{Ratio}}} || tolBasis ||
     113|| {{{Set}}} || {{{list}}} || base ||
     114|| {{{Complex}}} || {{{complex}}} || base ||
     115|| {{{NameBlock}}} || ''reference'' || ||
     116|| {{{VMatrix}}} || ''reference'' || ||
     117|| {{{PolMatrix}}} || ''reference'' || ||
     118|| {{{Code}}} || {{{.TolCode}}} || ||
     119|| (TOL reference) || {{{.TolReference}}} || tolLink ||
     120|| (TOL expression) || {{{.TolDeclaration}}} || tolLink ||
     121|| {{{(Struct)}}} || {{{attr(,"struct")}}} || tolLink ||
     122|| {{{(Class)}}} || {{{--}}} || ||
     123
     124== Otras interacciones con TOL ==
     125
     126Para la declaración de variables en TOL disponemos de dos funciones:
     127 * tolDefine
     128 * tolRelease
     129
     130Para la inclusión de archivos en TOL disponemos de:
     131 * tolInclude
     132 * tolExclude
     133
     134Para la carga de paquetes en TOL tenemos la función:
     135 * tolRequire
     136
     137La función {{{tolExist}}} nos permite determinar si una variable TOL existe antes de intentar obtenerla con {{{tolGet}}}.
     138
     139la función {{{tolStruct}}} nos permite crear listas estructuradas, compatibles con los conjuntos estructurados en TOL.
     140
     141Ejemplos:
     142
     143{{{
     144#!ruby
     145ss <- tolStruct("@Real", 3);
     146tolExecute("StructName", ss) # se obtiene el nombre de la estructura
     147}}}
     148
     149{{{
     150#!ruby
     151tolExist("test") # -> FALSE
     152tolDefine("test", 8)
     153tolExist("test") # -> TRUE
     154tolGet("test") # -> 8
     155tolRelease("test")
     156tolExist("test") # -> FALSE
     157}}}