2014-01-27 57 views
7

下一個R函數傳遞一個缺少參數的R-功能代表

tmp <- function(p) 
     rep(0, length.out = p) 

我感到困惑的我希望在調用錯誤的邏輯,因爲

> tmp() 
[1] 0 

,因爲p是失蹤。 rep的文檔說

函數rep是一個原語,但參數名稱的(部分)匹配與正常函數一樣執行。您不能再將缺少的參數傳遞給length.out。

我不明白這裏的邏輯。爲什麼rep似乎忽略p丟失?

[R版本3.0.2(2013年9月25日)

回答

5

在本文檔中,我看到:

的默認行爲是因爲如果電話是

代表(X,次= 1,length.out = NA,每個= 1)

不過,這並不適用於rep.int,這需要時間參數:

>rep(0,) 
[1] 0 

>rep.int(0,) 
Error in rep.int(0,) : argument "times" is missing, with no default 
+0

好的,缺失不是錯誤,因爲'rep'的行爲就像'length.out'具有默認值'NA'。這很有道理,謝謝。但是,句子怎麼樣?你不能再傳遞一個缺少的參數給length.out。*,這似乎與此邏輯相矛盾。 – NRH

+0

這不僅僅意味着你作爲一個用戶不能傳遞一個缺少的參數嗎?這是不可能的,因爲R將始終把NA放在它的位置?也許它只是告訴你這種行爲,而不是限制某些操作(設置縮小參數)。 – Zbynek

+0

也許你是對的。我的讀書是,我幾乎無法傳遞一個缺失的論點(這將是一個錯誤)。再次感謝。 – NRH