2016-07-11 69 views
0

我在R中再次出現了這個令人討厭的錯誤,我認爲自己理解的很好,我可以在足夠的時間內避免它。但現在它又開始困擾我了。R積分:函數評估給出了錯誤類型的結果

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(「集成複雜」)帶來(除其他外)http://finzi.psych.upenn.edu/R/library/elliptic/html/myintegrate.html –