在R中选择用户定义函数中的输出

时间:2014-09-28 19:18:51

标签: r function output user-defined-functions

我写了一个函数,它产生2个矩阵,比如A& B,我使用了list()来将它们分开输出。现在我想重新编写我的函数,以便显示的输出只有矩阵B,除非我在调用函数时指定它(但是,我的函数仍然要计算两个矩阵。)基本上,我想隐藏输出中的矩阵A,除非我另有说明。

我可以在R吗?

2 个答案:

答案 0 :(得分:1)

以下是一个例子:

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

基本上,您在函数中设置了一个默认值的变量,并在传递给函数的参数集中使用符号x = DEFAULT。不需要为要运行的函数指定变量。如果变量具有默认值,则返回B,否则返回两者。

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

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

[[2]]
[1] 2

答案 1 :(得分: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