模拟一会儿循环

时间:2015-03-10 09:38:16

标签: r for-loop while-loop

while循环可能有一些线程,但我正在努力解决它们。如果有人可以帮助R初学者,那就太好了。

因此,我尝试使用预测参数从样本回归预测中进行10000次模拟:mean,sd。谢天谢地,我的数据很正常。

这就是我所拥有的

N<-10000
i<-1:N
k<-vector(,N)
while(i<N+1){k(,i)=vector(,rnorm(N,mean=.004546,sd=.00464163))}

...我收到此错误

Error in vector(, rnorm(5000, mean = 0.004546, sd = 0.00464163)) : 
invalid 'length' argument
In addition: Warning message:
In while (i < N + 1) { : the condition has length > 1 and only the first element will be used

我似乎无法理解它。

3 个答案:

答案 0 :(得分:2)

没有理由在这里创建一个循环。如果你想放10000个样本,正态分布在均值= 0.004546和sd = 0.00464163到向量k,只需这样做:

k <- rnorm(10000,mean = 0.004546, sd = 0.00464163)

答案 1 :(得分:0)

试试这个

N<-10
i<-1
k<-matrix(0,1,N)
while(i<N+1){k[i]=rnorm(1,mean=.004546,sd=.00464163)
i=i+1
}
print(k)

答案 2 :(得分:0)

要解决您的问题,请使用@Esben Friis&#39;回答。你正在努力解决一个简单的问题。

要解决有关您收到的错误消息的问题:

Error in vector(, rnorm(5000, mean = 0.004546, sd = 0.00464163)) : 
invalid 'length' argument

这是错误的方法,因为vector()将生成一个设定长度的向量而不是一组值。您正在考虑as.vector()函数:

as.vector(rnorm(5000, mean = 0.004546, sd = 0.00464163))

然而,这不是必需的,因为这只会创建一个值的新向量,它已经在double类型的向量结构中。因此,使用此功能不会改变任何内容。

最好简单地使用:

rnorm(5000, mean=0.004546, sd=0.00464163)

此外:

In addition: Warning message:
In while(i<N+1){: the condition has length>1 and only the first element will be used

此警告源于i是一个长度大于1的向量1:N。警告指出只有i中的第一个索引才会被回收(用于所有循环)与执行i[1]相同。

while(i<N+1){ }
#is the same as
while(i[1]<N+1){ }

相反,您希望将新值循环到N.此外,您可以使用<=(小于或等于)运算符而不是<N+1

while(newVal<=N){ }

这种方法会带来新的问题,可以通过使用for()循环来解决,但这不是问题的范围,而且对于你的问题来说真的不是正确的方法,如开始。希望你学到了一些东西,祝你好运!