Как вызвать вывод функции в другой функции? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть две функции:

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


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


}

Где total_branch_length в getSNPnumber - это выход первой функции (getTotalBL). Нужно ли делать что-то большее, чем писать то же имя?вывода или это правильно так?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Если все, что вас интересует - это перенос результатов из одной функции в другую, я бы хотел предложить функцию %>%;он позволяет передавать результаты из одной команды в другую.

Он доступен в пакетах magrittr (или dplyr, если вы уже используете tidyverse).

Повторное использование вышеуказанного «Возможности 1»

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

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

ОБНОВЛЕНИЕ: Почему %>% полезно

Для моегочрезвычайно ограниченные знания, R хранит все объекты в оперативной памяти.Когда вы создаете объекты только для их удаления, они все равно создаются в оперативной памяти.Использование %>% позволяет обойти это.

0 голосов
/ 08 июня 2018

Вам необходимо сохранить выходные данные 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...