R整合:功能评估给出错误类型的结果

时间:2016-07-11 12:43:05

标签: r

我在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}}

那么这个问题又是什么呢?

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