2016-11-24 92 views
3

我有一個關於基本R使用的問題。之前可能會問,但我無法找到解決我的問題的方法。R函數:使用省略號傳遞參數

我有一個函數調用另一個函數。第二個函數的參數使用省略號(...)傳遞。但是,我收到錯誤消息:object "OBJECT" not found

f1 <- function(a, ...) { 
    print(a) 
    f2(...) 
} 
f2 <- function(...) { 
    print(b == TRUE) 
    print(runif(c)) 
} 
f1(2, b = FALSE, c = 2) 

哪給了我:Error in print(b == TRUE) : object 'b' not found

我知道有可能使用args <- list(...)來解決這個問題,然後分別調用每個參數,但是我想當有很多參數(不僅僅是兩個)時,這會變得複雜。

問題
如何使用省略號從f1參數傳遞給f2

+1

既然你知道'f2'參數爲什麼不用特定的參數來定義'f2'?另外,除了'list(...)$',如果你發現它更方便,你可以通過'.1'等來訪問'...'。 –

回答

6

所以這些省略號用於保存您在f1的參數中指定f2的所有參數。儘管當你聲明f2時,你仍然必須像正常函數那樣對待它,所以指定參數bc

f1 <- function(a, ...) { 
    print(a) 
    f2(...) 
} 

# Treat f2 as a stand-alone function 
f2 <- function(b, c) { 
    print(b == TRUE) 
    print(runif(c)) 
} 

f1(2, b=FALSE, c=2) 

[1] 2 
[1] FALSE 
[1] 0.351295 0.9384728