如何在另一个函数中调用函数的输出?

时间:2018-06-07 23:46:51

标签: r

我有两个功能:

getTotalBL <- function(Ne, n){
  ...
  total_branch_length #output
}


getSNPnumber <- function(total_branch_length,mu,L){


}

total_branch_length中的getSNPnumber是第一个函数(getTotalBL)的输出 我是否需要做更多的事情,而不是写出相同的输出名称,或者这样做是否正确?

2 个答案:

答案 0 :(得分:2)

您需要将getTotalBL的输出存储在对象中,并将其作为函数参数传递给getSNPnumbertotal_branch_length的范围仅限于getTotalBL

以下两个示例:

可能性1:

f1 <- function(x) x^2;
f2 <- function(xsquared, b) xsquared + b;

f2(f1(2), 1)
#[1] 5

相同
ret_from_f1 <- f1(2);
f2(ret_from_f1, 1);
#[1] 5

可能性2:

我们还可以将一个函数作为另一个函数的参数(这里是f2):

f2 <- function(fct, x, b) fct(x) + b;
f2(f1, 2, 1) 
#[1] 5

答案 1 :(得分:1)

如果你感兴趣的是将结果从一个函数转移到另一个函数,我想建议%>%函数;它允许您将结果从一个命令管道/链接到另一个命令。

它可以在包magrittr中使用(如果您已经使用dplyr,则可以tidyverse)。

重用上述&#39;可能性1&#39;

f1 <- function(x) x^2;
f2 <- function(xsquared, b) xsquared + b;

require(dplyr)
f1(2) %>% f2(1)

更新:为什么%>%有用

对于我非常有限的知识,R将所有对象存储在RAM中。创建对象时,只有要删除它们,它们仍然在RAM中创建。使用%>%可以绕过这个。