2014-09-28 104 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 
的一部分