我有多个函数可以产生随机数。所有这些功能都描述了相同的过程。我想随机选择一个函数100次,执行它并将结果(每个函数执行100行)保存在一个表中。从列表中随机选择并执行一个功能。重复这个过程并保存输出
对于我已经写以下代码功能:
# AKBAS u.a. (2009)
akbas <- function(n){
x.m=se.m=x.st=se.st=NULL
for(i in 1:n){
print(x.m[i] <- runif(n = 1, min = 0, max = 1))
se.m[i] <- 0.17 * (x.m[i]^2) - 0.03 * x.m[i]
print(x.st[i] <- runif(n = 1, min = 1, max = 5))
se.st[i] <- 0.17 * (x.st[i]^2) - 0.03 * x.st[i]
}
return(list(se.m, se.st))
}
se.akbas <- matrix(unlist(akbas(100)),100, 2)
# FUCHS u.a.(2007)
fuchs07 <- function(n){
x.m=se.m=x.st=se.st=NULL #solves indexing problem
for(i in 1:n){
print(x.m[i] <- runif(n = 1, min = 0, max = 1))
se.m[i] <- 0.11 * (x.m[i]^2) - 0.02 * x.m[i]
print(x.st[i] <- runif(n = 1, min = 1, max = 5))
se.st[i] <- 0.11 * (x.st[i]^2) - 0.02 * x.st[i]
}
return(list(se.m, se.st))
}
se.fuchs07 <- matrix(unlist(fuchs07(100)),100, 2)
# BELL AND GLADE (2004)
bell.glade <- function(n){
x.m=se.m=x.st=se.st=NULL
for(i in 1:n){
se.m[i] <- runif(n = 1, min = 0, max = 1)
se.m[i] <- 0.2
se.st[i] <- runif(n = 1, min = 1, max = 5)
se.st[i] <- 0.5
}
return(list(se.m, se.st))
}
se.bell.glade <- matrix(unlist(bell.glade(100)),100, 2)
# BORTER (1999b,a)
borter <- function(n){
x.m=se.m=x.st=se.st=NULL
for(i in 1:n){
se.m[i] <- runif(n = 1, min = 0, max = 1)
se.m[i] <- 0.1
se.st[i] <- runif(n = 1, min = 1, max = 5)
se.st[i] <- 0.5
}
return(list(se.m, se.st))
}
se.borter <- matrix(unlist(borter(100)),100, 2)
# FELL UND HARTFORD (1997)
fell.hartford <- function(n){
x.m=se.m=x.st=se.st=NULL
for(i in 1:n){
se.m[i] <- ifelse (runif(n = 1, min = 0, max = 1) < 0.25, 0.1, 0.4)
se.st[i] <- ifelse (runif(n = 1, min = 1, max = 5) < 1.5, 0.4, 0.7)
}
return(list(se.m, se.st))
}
se.fell.hartford <- matrix(unlist(fell.hartford(100)),100, 2)
funktionen <- list(se.akbas, se.bell.glade, se.borter, se.fell.hartford, se.fuchs07)
murgang <- do.call(rbind, funktionen)
的最终输出应在长格式 - se.m和se.st层叠。我包含一个指标列,其中se.m的值为1,se.st的值为2。这里输出的一小部分:
495 1 0.0228
496 1 0.0494
497 1 0.0158
498 1 0.0169
499 1 0.0357
500 1 0.0436
501 2 0.3459
502 2 2.7998
503 2 3.6571
504 2 3.1501
505 2 2.7418
506 2 0.5286
但是我坚持随机功能选择get.f
的prozess。我正在考虑类似:
get.f <- function(m){
sample(funktionen, 100, replace = TRUE)
}
如何保存结果?
有没有简单说明这个过程的建议?我确信有一种更有效的方法,但我还没有找到它。
我是R新人,对任何建设性评论和/或批评都会高度评价。 PS:这可能不是有史以来最好的问题,我知道你评价我-1。但如果你这样做,请告诉我为什么,所以我可以改善,而不是在将来犯同样的错误。
为什么不只是采样函数的* indices *并在列表中调用它们? 'ss < - sample(length(funktionen),size = 100,replace = TRUE); res < - unlist(lapply(ss,function(i)funktionen [[i]](100))?? –