X
のさまざまな値に対してe^(ax+b) over a=-1:1
とb=-1:1
を計算したいと思います。私は5つの要素のリストの形で出力します。リストの各要素は3X3行列です。2つ以上のベクトルを関数に渡そうとするR
私はこれをOuterとVectorizeで実現しました。さて、sigm1(x=1:3)
はザ・のみ、このコードスニペットを引き戻す必要な出力
[[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
を与える
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)
は、私がa=-1:1
とb=-1:1
のデフォルト値を使用しています。関数呼び出し中に同じものを渡そうとすると、それはうんざりしてしまいます。例えば。
sigm1(-1:1,-1:1,1:3)
[[1]]
[,1]
[1,] 0.1353353
[[2]]
[,1]
[1,] 1
[[3]]
[,1]
[1,] 54.59815
なぜ引数を渡して出力に違いがあるのかわかりません。
はおそらく、 'X'の引数に名前を付ける必要があります。 Rの名前のない引数は、位置によって渡されます。あなたは 'x'が最初の引数であるようにその関数を書き直すこともできます。 –
このコードで 'sigm1(a = -1:1、b = -1:1、x = 1:3)'をチェックしました。まだ動作しません – kasa