Intentando pasar más de 2 vectores a una función en R

Quiero computare^(ax+b) over a=-1:1 yb=-1:1 para varios valores deX. Quiero que la salida en forma de una lista de 5 elementos. Cada elemento en la lista es Matriz 3X3.

Logré esto usando Outer y Vectorize.

 sigm = function(a=0,b=0,x){
 return(exp(x*a+b))
 }

 sigm1 = Vectorize(function(a=-1:1,b=-1:1,x){

 outer(a,b,sigm,x)
 },SIMPLIFY = FALSE)

Ahora,sigm1(x=1:3) da la salida requerida

 [[1]]
      [,1]      [,2]     [,3]
 [1,] 0.1353353 0.3678794 1.000000
 [2,] 0.3678794 1.0000000 2.718282
 [3,] 1.0000000 2.7182818 7.389056

[[2]]
       [,1]      [,2]       [,3]
[1,] 0.04978707 0.1353353  0.3678794
[2,] 0.36787944 1.0000000  2.7182818
[3,] 2.71828183 7.3890561 20.0855369

[[3]]
       [,1]        [,2]       [,3]
[1,] 0.01831564  0.04978707  0.1353353
[2,] 0.36787944  1.00000000  2.7182818
[3,] 7.38905610 20.08553692 54.5981500

El único inconveniente con este fragmento de código es que estoy usando los valores predeterminados dea=-1:1 yb=-1:1. Cuando intento pasar lo mismo durante la llamada a la función, se vuelve loco. P.ej.

sigm1(-1:1,-1:1,1:3)

[[1]]
      [,1]
[1,] 0.1353353

[[2]]
 [,1]
[1,]    1

[[3]]
     [,1]
[1,] 54.59815

No puedo entender por qué pasar los argumentos está haciendo esta diferencia en la salida.

Respuestas a la pregunta(2)

Su respuesta a la pregunta