我想编写一个函数来做一些计算。在这个函数中,我想使用rpois在不同的均值y1
下产生随机数n1*2.4
。我觉得这个功能无法实现我的目标,所以我想知道如何编辑我的功能。
myfunC1 <- function(t1) {
t1 = seq(1, 3000, 1)
n1 <- 13.8065 / (1 + exp(-(t1 - 11.8532) / 26.4037))
y1 <- rpois(1, n1 * 2.4)
c <- log(2.7 / 2.4) * (y1 / n1 - (2.7 - 2.4) / (log(2.7) - log(2.4)))
result <- c
}
我还想知道如何在不使用for
循环的情况下编写函数来计算以下语句。 y和Lt在本声明中已为人所知。
G [吨] = MAX {0,0.85 * G [T-1] + L [吨]}
答案 0 :(得分:0)
您的功能有些变化:
myfunC1<-function(t1) {
n1<-13.8065/(1+exp(-(t1-11.8532)/26.4037))
y1<-unlist(lapply(n1*2.4, rpois, n=1))
c<-log(2.7/2.4)*(y1/n1-(2.7-2.4)/(log(2.7)-log(2.4)))
return(c)
}
你的输出:
t1<-seq(1,10,1)
myfunC1(t1)
[1] -0.043210706 0.076575495 0.006905820 -0.139863770 -0.045328088 0.006866088 -0.037032547 -0.079171724
[9] -0.083574188 0.018280450
关于问题的第二部分,您可以使用类似这样的方法:
L<-runif(10,1,10)
G<-runif(10,1,10)
myfunC2<-function(G,L,t)
{
return(max(0,0.85*G[t−1]+L[t]))
}
unlist(lapply(rep(1:length(L)),myfunC2, G=G, L=L))
[1] 0.000000 14.094739 7.489582 14.268056 16.318365 9.115776 11.729936 7.091494 16.030881 9.289892