循环多变量值

时间:2015-02-19 03:09:40

标签: r function distribution

我正在尝试运行模拟,从不同的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可以做什么来循环遍历这些向量中的每个值以产生不同的分布。建议?

2 个答案:

答案 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)