2016-03-24 11 views
1

Nokta bağımsız değişkenlerini (...) replicate numaralı belgede kullanmak istiyorum. Ancak çalışacak Sonuçların sarıcı kullanılması 100.yinelenen ifadede noktalar bağımsız değişkenini kullanarak başarısız - neden tam olarak?

  [,1]  [,2] 
[1,] 0.2859647 -0.1046510 
[2,] -0.7867414 0.5347617 

bir ortalama yok

foo <- function(k=1, n=10, ...) 
{ 
    replicate(k, rnorm(n, ...)) 
} 

foo(2, mean=100) 

: Onlar bu şekilde yapıyor bir etkiye sahip olmadığını fark ettim.

foo2 <- function(k=1, n=10, ...) 
{ 
    f <- function() rnorm(n, ...) 
    replicate(k, f()) 
} 

foo2(2, mean=100) 

Şimdi, sonuç tam mekaniği replicate içinde expr argüman değerlendirilmesi sırasında burada devam Ne 100.

  [,1]  [,2] 
[1,] 100.9644 100.6287 
[2,] 100.0804 101.0218 

bir ortalama var. Davranış hakkında açıklama yapan var mı?

+0

haklısın. Teşekkürler! Ve benim için: RTM, RTM:/ –

+0

Standart dışı değerlendirmenin sevinçleri. Sadece bu spesifik örnekte 'sapply' kullan. – Roland

cevap

1

Bu davranış belgelenmiştir: expr bir işlev çağrısı

ise, değerlendirilir nereye varsayımların farkında olmak ve özellikle de neyi ... başvurabilir. Yinelenecek argümanları olarak bir işlev çağrısına ek adlandırılmış bağımsız değişkenleri iletebilirsiniz: bkz. ‘Örnekler’.

Ve "Örnekler" bölümünde

:

## use of replicate() with parameters: 
foo <- function(x = 1, y = 2) c(x, y) 
# does not work: bar <- function(n, ...) replicate(n, foo(...)) 
bar <- function(n, x) replicate(n, foo(x = x)) 
bar(5, x = 3) 
İlgili konular