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
我似乎无法理解它。
答案 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()
循环来解决,但这不是问题的范围,而且对于你的问题来说真的不是正确的方法,如开始。希望你学到了一些东西,祝你好运!