2015-02-24 1 views
2

Предположим, у меня есть список функций и вектор значений параметров:R - как я бегу каждую функцию в списке функций с параметрами, указанными вектором

functions <- list(a = function(x) x *2, b = function(x) x*3, c = function(x) x * 4) 
paramVector <- c(2, 2, 1) 

Теперь я хочу следующую функциональность вызов каждой функции с соответствующим параметром и сопоставляя результат в вектор:

result <- c() 
for (idx in 1:length(functions)) { 
    result[idx] <- functions[[idx]](paramVector[idx]) 
} 
result 

есть ли способ сделать это без для цикла?

ответ

3

Чтобы перебрать через functions и paramVector объекты одновременно, используйте Карту. Например,

Map(function(f,p) f(p), functions, paramVector) 

Отметьте, что Map() всегда возвращает список. Вы также можете использовать mapply(), который будет пытаться упростить вектор

mapply(function(f,p) f(p), functions, paramVector) 
+1

'mapply' может быть более уместным, если они хотят получить результат в виде вектора. – thelatemail

 Смежные вопросы

  • Нет связанных вопросов^_^