| 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 | |
| 9 | Necesita por tanto de una instalación de TOL compatible con R. |
| 10 | |
| 11 | Dispone 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 | |
| 15 | El 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 | |
| 17 | Durante 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 | |
| 19 | Una 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 | |
| 28 | Las 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 |
| 32 | tolInit() # llama a tolLoad() automáticamente |
| 33 | }}} |
| 34 | |
| 35 | == Comunicación con TOL == |
| 36 | |
| 37 | Para 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 | |
| 43 | Mientras {{{tolGet}}} nos permite obtener el valor de una variable en TOL, {{{tolRefer}}} nos permite referirnos a ella sin traer su valor hasta R. |
| 44 | |
| 45 | De 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 | |
| 47 | Ejemplos: |
| 48 | |
| 49 | {{{ |
| 50 | #!ruby |
| 51 | # Obtener un valor de TOL |
| 52 | tolGet("Time") #warning |
| 53 | tolGet("Time", grammar="Text") |
| 54 | }}} |
| 55 | |
| 56 | {{{ |
| 57 | #!ruby |
| 58 | # Llamar a una función de TOL |
| 59 | tolExecute("Sin", 3) |
| 60 | tolExecute("TextLength", "Texto") |
| 61 | # Con varios argumentos |
| 62 | tolExecute("TextSub", "Texto", 2, -2) |
| 63 | }}} |
| 64 | |
| 65 | {{{ |
| 66 | #!ruby |
| 67 | # Encadenar llamadas |
| 68 | tolExecute("Sin", tolExecute("Sin", 3)) # 2 llamadas |
| 69 | tolExecute("Sin", tolDeclare("Sin", 3)) # 1 llamada |
| 70 | }}} |
| 71 | |
| 72 | {{{ |
| 73 | #!ruby |
| 74 | # Usar variables de TOL |
| 75 | tolExecute("Sin", tolGet("Pi")) # 2 llamadas |
| 76 | tolExecute("Sin", tolRefer("Pi")) # 1 llamada |
| 77 | }}} |
| 78 | |
| 79 | Las 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 |
| 84 | tolExecute("CodeGrammar", tolDeclare("Sin")) #warning |
| 85 | # Obtener el Code para una gramática dada |
| 86 | tolExecute("Sin", grammar="Real") |
| 87 | }}} |
| 88 | |
| 89 | Las funciones {{{tolExecute}}} y {{{tolDeclare}}} también pueden usarse con operadores: |
| 90 | |
| 91 | {{{ |
| 92 | #!ruby |
| 93 | # Usar operadores |
| 94 | tolExecute("-", 2) # monario |
| 95 | tolExecute("-", 2, 1) # binario |
| 96 | tolExecute("-", 10, 2, 1) # binario |
| 97 | }}} |
| 98 | |
| 99 | == Correspondencias de las variables de TOL == |
| 100 | |
| 101 | Los tipos de variables de TOL (gramáticas) se hacen corresponder con distintos tipos o clases en R. |
| 102 | A 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 | |
| 126 | Para la declaración de variables en TOL disponemos de dos funciones: |
| 127 | * tolDefine |
| 128 | * tolRelease |
| 129 | |
| 130 | Para la inclusión de archivos en TOL disponemos de: |
| 131 | * tolInclude |
| 132 | * tolExclude |
| 133 | |
| 134 | Para la carga de paquetes en TOL tenemos la función: |
| 135 | * tolRequire |
| 136 | |
| 137 | La función {{{tolExist}}} nos permite determinar si una variable TOL existe antes de intentar obtenerla con {{{tolGet}}}. |
| 138 | |
| 139 | la función {{{tolStruct}}} nos permite crear listas estructuradas, compatibles con los conjuntos estructurados en TOL. |
| 140 | |
| 141 | Ejemplos: |
| 142 | |
| 143 | {{{ |
| 144 | #!ruby |
| 145 | ss <- tolStruct("@Real", 3); |
| 146 | tolExecute("StructName", ss) # se obtiene el nombre de la estructura |
| 147 | }}} |
| 148 | |
| 149 | {{{ |
| 150 | #!ruby |
| 151 | tolExist("test") # -> FALSE |
| 152 | tolDefine("test", 8) |
| 153 | tolExist("test") # -> TRUE |
| 154 | tolGet("test") # -> 8 |
| 155 | tolRelease("test") |
| 156 | tolExist("test") # -> FALSE |
| 157 | }}} |