我的循环无法识别我的功能

时间:2014-10-15 15:15:55

标签: r

我试图从正态分布中抽取一个平均值为10.016且标准差为0.8862719(n = 20)的人口,一千次。我想创建一个循环来执行此操作。我尝试创建一个函数(stamendist)来从正态分布中绘制具有上述均值和标准差的随机变量,但是当我运行循环时,我收到一条错误消息: 错误:找不到功能" stamendist" (即使我在运行循环之前运行了该函数)。

我尝试在没有对象的情况下运行循环" stamendist"通过输入rnorm(n = 20,mean = 10.016,sd = 0.8862719),但仍然存在相同的错误消息。
这是我的代码:

stamendist <- rnorm(n=20,mean=10.016,sd=0.8862719)
sampled.means <- NA 

for(i in 1:1000){
    y=stamendist(100)
    sampled.means[i] <- mean(y)
}

我误解了一个函数是如何工作的吗?我对R很陌生,所以任何帮助或建议都会受到赞赏。

3 个答案:

答案 0 :(得分:3)

您不需要循环来获取样本的向量意味着:

n <- 1000
sampled.means <- colMeans(matrix(rnorm(n = 20 * n, 10.016, 0.8862719), ncol = n))

答案 1 :(得分:1)

如果您希望stamentdist成为一个函数,则需要将stamendist指定为函数。函数的一般表示法是:

foo <- function(args, ...){
    expressions
}

然后,您必须决定希望用户指定哪些参数。在您的具体示例中,我假设您希望用户指定观察数量。以下是该功能的用法:

stamendist <- function(n) {
  rnorm(n=n,mean=10.016,sd=0.8862719)
}

答案 2 :(得分:0)

在这一行:

stamendist <- rnorm(n=20,mean=10.016,sd=0.8862719)

您为名为stamendist

的向量分配了20个值

在这一行:

y=stamendist(100)

你试图调用一个不存在的函数stamendist。

将此行放在循环中:

stamendist <- rnorm(n=20,mean=10.016,sd=0.8862719)

因此,您为每次迭代创建一组新的随机数。 然后将stamendist传递给mean函数。你根本不需要y