积分时出错“...不是函数、字符或符号”

问题描述 投票:0回答:1

我有这个集成,其中包含一个功能。我想对 0-39 范围内的 x 值进行积分。

#parameters
alpha <- 0.86
y <- 70000
t <- 600
u <- 5353.65

get_p <- function(x,y,t,u) {
  (((alpha^alpha) * ((1 - alpha)^(1 - alpha)) * (y - t * x)) / u)^(1 / (1 - alpha))
}

integrate(x * get_p(x,y,t,u),lower = 0,upper = 39)

但是当我运行此代码时,如果我首先输入 x <- 0:

,则会收到错误
Error in match.fun(f) : 
  'x * get_p(x, y, t, u)' is not a function, character or symbol

如果我不首先指定 x,我会收到此错误:

Error in match.fun(f) : object 'x' not found

x 不应该被定义,我们正在对 i 进行积分!

我做错了什么?

r function error-handling syntax-error integrate
1个回答
0
投票

integrate()
函数需要一个适当的函数作为第一个参数,而不是表达式。您可以使用匿名函数

integrate(function(x) {x * get_p(x,y,t,u)},lower = 0, upper = 39)

或者使用最新的 lambda 语法

integrate(\(x) {x * get_p(x,y,t,u)},lower = 0, upper = 39)
© www.soinside.com 2019 - 2024. All rights reserved.