2016-07-11 5 views
0

Rでこの迷惑なエラーが再び発生しました。私はよく理解していると思っていました。しかし、今私は再び私を悩まし始めている。R integrate:関数の評価が間違ったタイプの結果を返しました

inner.f.y <- function(y) 
{ 
    cat("length(y) ", length(y), "\n") 

    t<-2*y*exp((exp(-1*1i)-1)*y) 

    cat("length(t) ", length(t), "\n") 
    t 
} 
integrate(inner.f.y, lower = 0.01, upper = 8) 

これは、だから、この問題何をすることができ、コンソールに

> integrate(inner.f.y, lower = 0.01, upper = 8) 
length(y) 21 
length(t) 21 
Error in integrate(inner.f.y, lower = 0.01, upper = 8) : 
    evaluation of function gave a result of wrong type 

出力のですか?

答えて

3

は(私の強調)?integrateを参照してください:

F:R機能数値最初の引数を取り、同じ長さの数値ベクトルを返します。

あなたの機能inner.f.yは数値ベクトルを返しますが、複雑なものはありません。

a <- inner.f.y(1) 

is.numeric(a) 
[1] FALSE 

is.complex(a) 
[1] TRUE 

@Ben Bolkerが示唆するように、あなたの代わりにelliptic::myintegrateを使用することもできます。

elliptic::myintegrate(inner.f.y, lower = 0.01, upper = 8) 
length(y) 21 
length(t) 21 
length(y) 21 
length(t) 21 
[1] -1.150277-1.380324i 
+1

'ライブラリ(SOSを); findFn( "complex complex") 'が呼び出されます(他にもあります)http://finzi.psych.upenn.edu/R/library/elliptic/html/myintegrate.html –

関連する問題