【发布时间】:2019-01-25 19:58:30
【问题描述】:
第一个函数运行良好,生成随机数:
n <-10
inv.f <- array(0, dim=c(n ,1))
for(i in 1:n){
u <- runif(1,0,1)
gexp.cdf <- function(x,beta=5.5){ (1-exp(-beta*x))-u }
inv.f[i,] <- uniroot(gexp.cdf, lower=0, upper=5,extendInt="yes")$root
}
inv.f
第二个功能不起作用;它没有生成随机数。
RN <- function(n){
inv.f <- array(0, dim=c(n ,1))
for(i in 1:n){
u <- runif(1,0,1)
gexp.cdf <- function(x,beta=5.5){ (1-exp(-beta*x))-u }
inv.f[i,] <- uniroot(gexp.cdf, lower=0, upper=5,extendInt="yes")$root
}
}
RN(5)
【问题讨论】:
-
您需要在函数的最后一行添加一个 return 语句,例如
return(inv.f)(这也可以隐式地完成,只需将该行设为inv.f) -
-Ben Bolker,感谢您的 cmets。但添加后得到的结果如下
-
RN(10) # NOT Work as I want [,1] [1,] 6.32196 [2,] 0.00000 [3,] 0.00000 [4,] 0.00000 [5,] 0.00000 [6, ] 0.00000 [7,] 0.00000 [8,] 0.00000 [9,] 0.00000 [10,] 0.00000
标签: r for-loop random functional-programming numbers