我试图从正态分布中抽取一个均值为10.016,标准差为0.8862719 (n=20)的总体,进行一千次抽样。我想创建一个循环来做这件事。我试着用上面提到的均值和标准差来创建一个从正态分布中抽取随机变量的函数(stamendist),但是当我运行这个循环时,我得到了一个错误消息: Error: ran not find function "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的新手,所以任何帮助或建议都将不胜感激。
发布于 2014-10-15 23:25:58
您不需要循环来获得样本均值的向量:
n <- 1000
sampled.means <- colMeans(matrix(rnorm(n = 20 * n, 10.016, 0.8862719), ncol = n))发布于 2014-10-15 23:23:38
如果你想让stamentdist成为一个函数,你需要将stamendist赋值为一个函数。函数的一般表示法为:
foo <- function(args, ...){
expressions
}然后,您必须决定希望用户指定哪些参数。在您的特定示例中,我假设您希望用户指定观察值的数量。考虑到这一点,下面是函数的外观:
stamendist <- function(n) {
rnorm(n=n,mean=10.016,sd=0.8862719)
}发布于 2014-10-15 23:21:45
在这一行中:
stamendist <- rnorm(n=20,mean=10.016,sd=0.8862719)将20个值赋给名为stamendist的向量
在这一行中:
y=stamendist(100)你试图调用一个根本不存在的函数stamendist。
在循环中移动这一行:
stamendist <- rnorm(n=20,mean=10.016,sd=0.8862719)因此,您可以为每次迭代创建一组新随机数。然后将stamendist传递给均值函数。而且你根本不需要y
https://stackoverflow.com/questions/26386081
复制相似问题