R错误 - “类型'闭包的对象'不是子集”

时间:2015-03-12 16:10:16

标签: r

我正在尝试设计一个简单的函数,根据生成的n个单位返回利润。

我使用以下代码根据一些给定的参数运行1000次需求模拟:

nsims=1000
sim.demand=rep(NA,nsims)
  for(i in 1:nsims){
  sim.demand[i]=rnorm(12, 12000, sd=3496.752) 
}
然后,我将利润函数定义为生成的n个单位的函数:

profit <- function(n)
 for(i in 1:1000){
   if(sim.demand[i]<=n) 
     profit[i]=-100000-(80*n)+100*sim.demand[i]+30*(n-sim.demand[i]) else
     profit[i]=-100000-(80*n)+100*n
}

例如,当我尝试以10000单位获得利润时,我输入利润(10000)。但我不断收到以下错误:

Error in profit[i] = -1e+05 - (80 * n) + 100 * n : 
object of type 'closure' is not subsettable

思考?提前谢谢!

1 个答案:

答案 0 :(得分:4)

您正在调用利润[i],其中利润是一种功能,而您并不希望对功能进行分组。我不完全确定你想做什么,但我认为你想创建一个新的变量,以便在函数结束时返回。所以,像:

profit <- function(n){
  return_profit<-rep(NA, 1000)
  for(i in 1:1000){
    if(sim.demand[i]<=n) {
      return_profit[i]=-100000-(80*n)+100*sim.demand[i]+30*(n-sim.demand[i])
    } 
    else{
      return_profit[i]=-100000-(80*n)+100*n
    }
  }
  return_profit
}