2014-09-28 60 views
-1

我已經編寫了一個函數,生成輸出2矩陣,例如A & B,並且我已經使用了list()以便在輸出中分離它們。現在我想重寫我的函數,以便顯示的輸出只有矩陣B,除非我在調用函數時指定它(但是,我的函數仍然需要計算兩個矩陣)。基本上,我想隱藏矩陣除非我另有說明,否則來自輸出。在R中選擇用戶自定義函數中的輸出

我可以在R中做這個嗎?

回答

1

是的。

下面是一個例子:

myfun <- function(a, b, Bonly=TRUE) { 
    # calculations 
    result <- list(a, b) 
    if (Bonly) return(result[2]) else return(result) 
} 

基本上你設置有與該組傳遞給函數的參數符號X =默認功能的默認變量。該變量不需要爲要運行的功能指定。如果變量具有默認值,則只返回B,否則返回兩者。

> myfun(1,2) 
[[1]] 
[1] 2 

> myfun(1,2, FALSE) 
[[1]] 
[1] 1 

[[2]] 
[1] 2 
1

您可以設置一個默認值說,矩陣A的參數應該隱藏,除非用戶指定它應該是結果

myFunction <- function(<your arguments>, hideA = TRUE){ 

    #your computations 
    ... 
    output <- list(A = <matrix A>, B = <matrix B>) 

    #your result 
    if(hideA) output <- output$B #hide A 
    return(output) 
} 


#calling the function 
myFunction(<your args>) #A will be hidden by default 
myFunction(<your args>, hideA = FALSE) #the list of matrix will be returned 
的一部分
相關問題