R: Использовать (m?) Применить с функцией, которая возвращает список в качестве аргумента функции, которая будет применена? - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть функция двух аргументов foo(a,b). В качестве входных данных для этой функции я должен был использовать каждую строку вывода combinations(10,2) из библиотеки gtools. Я пытался заставить его работать с mapply, и у меня действительно были большие надежды на apply(combinations(10,2),1,foo), но все, что я пытался, выдает ошибку "аргумент" b "отсутствует, без значения по умолчанию". Как я могу исправить это, не сохраняя комбинации (10,2) в памяти и не разделяя ее? Я подозреваю, что мне не хватает трюка с Vectorize.

. Для простого воспроизводимого примера используйте beta(a,b) вместо foo(a,b).

Что я очень конкретно не хочет делать что-то вроде:

a<-combinations(10,2)
mapply(foo,a[,1],a[,2])

, потому что я не хочу хранить комбинации (10,2) в памяти.

1 Ответ

1 голос
/ 26 апреля 2020

Здесь мы можем использовать do.call с mapply или Map

do.call(mapply, c(FUN = foo, asplit(combinations(10, 2), 2)))

Или с Map (возвращает list)

do.call(Map, c(f = foo, asplit(combinations(10, 2), 2)))

Как воспроизводимый пример, можно использовать beta

do.call(Map, c(f = beta, asplit(combinations(10, 2), 2)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...