我已經編寫了一個函數,生成輸出2矩陣,例如A & B,並且我已經使用了list()
以便在輸出中分離它們。現在我想重寫我的函數,以便顯示的輸出只有矩陣B,除非我在調用函數時指定它(但是,我的函數仍然需要計算兩個矩陣)。基本上,我想隱藏矩陣除非我另有說明,否則來自輸出。在R中選擇用戶自定義函數中的輸出
我可以在R中做這個嗎?
我已經編寫了一個函數,生成輸出2矩陣,例如A & B,並且我已經使用了list()
以便在輸出中分離它們。現在我想重寫我的函數,以便顯示的輸出只有矩陣B,除非我在調用函數時指定它(但是,我的函數仍然需要計算兩個矩陣)。基本上,我想隱藏矩陣除非我另有說明,否則來自輸出。在R中選擇用戶自定義函數中的輸出
我可以在R中做這個嗎?
是的。
下面是一個例子:
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
您可以設置一個默認值說,矩陣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
的一部分