Подтвердить что ты не робот

Как передать список функции в R?

Мне трудно найти информацию о том, как передать список функции в R.

Я использовал этот подход раньше, например,

plot(list(x=1,y=1))

но следующий пример дает мне ошибку:

foo <- function(a, b) c <- a + b
foo(list(a=1,b=1))

Error in foo(list(a = 1, b = 1)) : 
   argument "b" is missing, with no default

Кроме того, ?function не работает, а help('function') не предоставляет информацию о передаче списка функции.

Обновление

Чтобы пояснить, я понимаю, как я могу использовать список как один аргумент, но я был смущен, потому что у меня создалось впечатление, что свойство функций состоит в том, что в качестве списка можно передавать несколько аргументов. Похоже, это впечатление было неправильным. Скорее, многие функции написаны специально для обработки списков, как описано в комментариях и ответах ниже.

4b9b3361

Ответ 1

Используйте do.call

foo <- function(a, b)  a + b

do.call(foo, list(a=1,b=1))

В качестве альтернативы вы можете сделать

foo <- function(l) l$a + l$b

foo(list(a=1,b=1))

Ответ 2

У вашей функции есть два аргумента, но вы передаете только один, следовательно, ошибку.

Вы можете изменить свой код так:

foo <- function(a) c <- a[[1]] + a[[2]]
foo(list(a=1,b=1))