W dokumentacji sapply
i replicate
jest ostrzeżenie o użyciu ...
Używanie „...” i «powielać»
Teraz mogę przyjąć je jako takie, ale chciałby, aby zrozumieć, co jest za nim. Dlatego stworzyliśmy ten mały contrived przykład:
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)
Może zrobiłem coś oczywistego strasznie źle, ale uważam, że wynik ten raczej denerwujące. Więc może ktoś mi wyjaśnić, dlaczego we wszystkich powyższych wywołań outerfunction
, otrzymuję ten wynik:
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
Tak jak mówiłem: docs wydają się ostrzec o tym, ale nie widzę, dlaczego tak jest .
pamiętać, że w tym przykładzie, zdarzenie „poprawny” sposób nie działa prawidłowo - jest replikowane 'x' razy (3) zamiast' n' razy (5). – James
@ James - nie w moim systemie. Dostaję matrycę 2 * 5 dla 'bar (5, x = 3)' –
Ups, mój błąd. Miał literówki podczas transkrypcji przykładów. – James