zu übergeben Ich möchte e^(ax+b) over a=-1:1
und b=-1:1
für verschiedene Werte von X
berechnen. Ich möchte die Ausgabe in Form einer Liste von 5 Elementen. Jedes Element in der Liste ist 3x3 Matrix.Versuchen, mehr als 2 Vektoren zu einer Funktion in R
Ich habe dies mit Outer und Vectorize erreichen. Jetzt
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)
, gibt sigm1(x=1:3)
die erforderliche Ausgabe
[[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
Der einzige mit diesem Code-Schnipsel zurückziehen wird, ich bin die Standardwerte von a=-1:1
und b=-1:1
verwenden. Wenn ich versuche, während des Funktionsaufrufs dasselbe zu tun, geht es drunter und drüber. Z.B.
Ich bin nicht in der Lage herauszufinden, warum die Übergabe der Argumente diesen Unterschied macht.
Sie müssen wahrscheinlich das 'X' Argument nennen. Nicht benannte Argumente in R werden nach Position übergeben. Sie könnten diese Funktion auch so umschreiben, dass 'x' das erste Argument ist. –
Ich überprüfte mit diesem Code 'sigm1 (a = -1: 1, b = -1: 1, x = 1: 3)'; funktioniert immer noch nicht – kasa