CAPÍTULO 5. ESCRITURA DE FUNCIONES
93
Nótese que todos los otros argumentos, “el resto de los argumentos”, se pa-
san intactos de
NuevaMiFunc()
a
MiFunc.v3()
, como se puede ver en la última
ejecución del código anterior.
5.1.3.2. El uso del argumento
“...”
al principio de una función, cuando no
se conoce de antemano el número de argumentos
Otro uso de este argumento especial es al principio de funciones para las
que no se conoce de antemano el número de argumentos que les serán envia-
dos. Uno de estos casos es la función
paste()
, que sirve para construir una
cadena de caracteres a partir de un número cualquiera de cadenas de caracte-
res que le entreguen como argumentos. En seguida se muestra el encabezado
de argumentos y el uso de dicha función.
args
(paste)
## function (..., sep = " ", collapse = NULL)
## NULL
paste
(
"uno"
,
"dos"
,
"tres"
,
sep
=
"++"
)
## [1] "uno++dos++tres"
paste
(
"uno"
,
"dos"
,
"tres"
,
se
=
"++"
)
## [1] "uno dos tres ++"
El asunto aquí es que, la asociación con todos los argumentos que siguen
al argumento especial “...”, es
nominal
y de ninguna manera
posicional
; esto es,
deben ser explícitamente nombrados si su valor se requiere al momento de ser
ejecutada la función. Además, la asociación parcial de argumentos también está
prohibida, como se puede ver en la última ejecución del código anterior, donde
el intérprete no entendió que por
se=”++”
, se quería significar
sep=”++”
, y en
vez de ello interpretó que se deseaba agregar una cadena más a la salida.
5.2. Visibilidad del código
Cada vez que se introduce un nuevo símbolo en alguna parte del código de
un programa escrito en R, al ejecutarse, el lenguaje tiene que resolver de algún
modo, de qué manera se asocia ese símbolo con algún objeto computacional
creado o por crearse dentro del programa: ¿se refiere el símbolo a algún objeto
que ya existía en el programa?, ¿es necesario crear un nuevo objeto asociado
con el símbolo que se ha introducido? La visibilidad del código, y las reglas de
alcance del lenguaje R, que son los temas de esta sección, se refieren precisa-
mente a la asociación de los símbolos con los objetos computacionales creados
durante la ejecución de algún programa y muy particularmente en el tema de
cómo se hace esta asociación cuando se ejecutan las funciones.