我正在尝试设计一个简单的函数,根据生成的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
思考?提前谢谢!
答案 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
}