| | 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 | }}} |