2015-03-09 1 views
2

Mapply применяет двумерную функцию к 1-му элементам каждого m-мерного вектора, а затем ко 2-му элементам каждого и т. Д. Результатом является m-мерный вектор.Как обобщить mapply для работы «в поперечном направлении»?

Например

> mapply(sum, 1:5, 12:16) 
[1] 13 15 17 19 21 

Теперь, есть DIRECT альтернатива mapply что применяет функцию «крестообразно» к каждому из первого вектора и каждый из компонентов второго вектора?

Результатом будет m^2-матрица.

+3

вы имели в виду 'внешний (1: 5, 12:16, '+') или' Vectorize (функция (x) x + 1: 5) (12:16) ' – akrun

+0

Как бы внешняя работа для f (x, y) = x^2 + x^y-3 или любая другая двумерная функция? – user3451767

+0

Попробуйте 'f1 <- функцию (x, y) x^2 + x^y-3; внешний (1: 5, 12:16, f1) ' – akrun

ответ

3

Вы можете попробовать outer

f1 <- function(x,y) x^2+x^y-3 
outer(1:5, 12:16, f1) 

, который будет похож на

t(Vectorize(function(x) f1(x,12:16))(1:5)) 
Смежные вопросы