I'm trying to avoid using loops by using apply
to apply a user-defined function to a matrix. The problem I have is that there are additional parameters that my function uses and they differ for each column of the matrix. Below is a toy example.
Say I have the following function:
foo <- function(x, a, b, c) return( (a*x + b)^c )
and I want to apply it to a matrix bar
using different values of a
, b
, and c
for each column.
bar <- matrix(1:15, ncol = 3)
a <- 4:6
b <- 3:1
c <- 1:3
In this case, for the first column of bar
, then a=4
, b=3
, and c=1
. I tried this,
apply(bar, 2, foo, a=a, b=b, c=c)
but this is clearly incorrect, as each column uses all parameters sequentially before wrapping back to the first parameter again. Any suggestions?