我正在尝试运行模拟,从不同的n计数,平均值和标准偏差创建两个独立的正态分布。例如,n计数从100到1000,表示从0到100,标准偏差从1到10,其中每个向量的每个元素与其他两个向量的每个其他元素组合,如下所示:100,0,1 ; 100,0,2; 100,0,3; ... 100,1,1; 100,1,2; 100,1,3; ... 999,0,1;等。
我首先尝试创建三个具有这些数字的向量:
ncount <- 100:1000
means <- 0:100
std <- 1:10
我还写了一个基本功能:
distr <- function(count, mean, stddev) {
distr1 <- rnorm(count1, mean1, stddev1)
hist(distr1)
}
此时,我被困(主要是因为不知道)R可以做什么来循环遍历这些向量中的每个值以产生不同的分布。建议?
答案 0 :(得分:1)
您可以使用expand.grid
,它会创建ncount / means / std和Vectorize
的所有组合,这些组合将会教授&#39;你的函数以行方式处理输入参数:
ncount <- 100:101
means <- 0:2
std <- 1:3
distr <- function(count, mean, stddev) {
distr1 <- rnorm(count, mean, stddev)
hist(distr1)
}
d <- expand.grid(ncount=ncount,means=means,std=std)
Vectorize(distr)(d$ncount,d$means,d$std)
答案 1 :(得分:0)
虽然@Marat Talipov的答案在许多方面都是理想的,
不要忘记您也可以使用嵌套的for
循环,如:
for(ncount in 100:1000)
for(means in 0:100)
for(std in 1:10)
distr(ncount,means,std)