En la documentación de sapply
y replicate
hay una advertencia respecto al uso de ...
El uso de "..." y 'reproducir'
Ahora, puedo aceptarlo como tal, pero me gustaría entender lo que está detrás de él. Así que he creado este pequeño ejemplo artificioso:
innerfunction<-function(x, extrapar1=0, extrapar2=extrapar1)
{
cat("x:", x, ", xp1:", extrapar1, ", xp2:", extrapar2, "\n")
}
middlefunction<-function(x,...)
{
innerfunction(x,...)
}
outerfunction<-function(x, ...)
{
cat("Run middle function:\n")
replicate(2, middlefunction(x,...))
cat("Run inner function:\n")
replicate(2, innerfunction(x,...))
}
outerfunction(1,2,3)
outerfunction(1,extrapar1=2,3)
outerfunction(1,extrapar1=2,extrapar2=3)
Tal vez he hecho algo obvio muy mal, pero me parece el resultado de este lugar inquietante. Entonces, ¿puede alguien explicarme por qué, en todas las llamadas anteriores a outerfunction
, consigo esta salida:
Run middle function:
x: 1 , xp1: 0 , xp2: 0
x: 1 , xp1: 0 , xp2: 0
Run inner function:
x: 1 , xp1: 0 , xp2: 0
x: 1 , xp1: 0 , xp2: 0
Como he dicho: los documentos parecen advertir para esto, pero no veo por qué esto es así .
Tenga en cuenta que en el ejemplo, el evento de manera "correcta" no funciona correctamente - Se repite 'x' veces (3) en lugar de' n' veces (5). – James
@James - no está en mi sistema. Obtengo una matriz de 2 * 5 para 'bar (5, x = 3)' –
Vaya, mi error. Tuve un error al transcribir los ejemplos. – James