我有两个功能:
getTotalBL <- function(Ne, n){
...
total_branch_length #output
}
getSNPnumber <- function(total_branch_length,mu,L){
}
total_branch_length
中的getSNPnumber
是第一个函数(getTotalBL
)的输出
我是否需要做更多的事情,而不是写出相同的输出名称,或者这样做是否正确?
答案 0 :(得分:2)
您需要将getTotalBL
的输出存储在对象中,并将其作为函数参数传递给getSNPnumber
。 total_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中创建。使用%>%
可以绕过这个。