我试图从正态分布中抽取一个平均值为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很陌生,所以任何帮助或建议都会受到赞赏。
答案 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
在这一行:
y=stamendist(100)
你试图调用一个不存在的函数stamendist。
将此行放在循环中:
stamendist <- rnorm(n=20,mean=10.016,sd=0.8862719)
因此,您为每次迭代创建一组新的随机数。
然后将stamendist
传递给mean函数。你根本不需要y