我在R中再次遇到这个恼人的错误,我认为我理解得很好,我可以避免它足够的时间。但现在它又开始困扰我了。
> 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
这是控制台上的输出
{{1}}
那么这个问题又是什么呢?
答案 0 :(得分: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