R需要非常长的时间来运行这个方程

R需要非常长的时间来运行这个方程,r,R,我以前从未使用过R,我正在运行一个类的等式,但什么都没有发生/运行它需要非常长的时间 要解决我在R方面的经验不足,我所做的就是重新设置它 > x4 = c(rgamma(5800,3)) > x4ave = mean(x4) > x4sd = sd(x4) > hist(x4) > samp54 = sample(x4,54,replace = F) > samp54ave = mean(samp54) > x4distr = c() > for(

我以前从未使用过R,我正在运行一个类的等式,但什么都没有发生/运行它需要非常长的时间

要解决我在R方面的经验不足,我所做的就是重新设置它

> x4 = c(rgamma(5800,3))
> x4ave = mean(x4)
> x4sd = sd(x4)
> hist(x4)
> samp54 = sample(x4,54,replace = F)
> samp54ave = mean(samp54)
> x4distr = c()
> for(i in 1:550){samp=sample(x4,54,replace=F);x4distr=c(x4distr,mean(samp))}
> x4distrterm = x4distr[220]
> x4distrterm
[1] 2.916715
> x4distr2 = c()
> for(i in 1:35000){samp=sample(x4,250,replace=F);x4distr2=c(x4distr2,mean,(samp))}
我希望我的X4Distribut2已填写完毕,但它不会停止运行数小时。

您有两个错误:

1) 您将
mean
(函数)与输出连接起来,而不是
mean
的结果

2) 您应该预先分配内存来存储结果,否则每次存储新结果时都会分配内存

一个简单的解决方案:

x4distr2 = numeric(35000)
for(i in 1:35000){samp=sample(x4,250,replace=F);x4distr2[i]=mean(samp)}

做35次,而不是35000次,然后计时!事实上,问题是在每一次迭代中,他都用一个包含最新迭代结果的新X4Distric2替换X4Distric2。这使得for循环的速度减慢到爬行的速度,尽管在最初的几次迭代中缓慢前进(这意味着对前35次迭代进行计时并将其乘以1000将大大低估所需的时间)。也就是说,我不确定循环的具体目标是什么。@Luis这些循环效率不高。实际上还不清楚OP为什么要这么做。但特别是在谈到您的评论时,OP对
x4distr
做了550次同样的事情。所以,虽然您所说的Lough for loops是正确的,但它不会停止运行数小时的原因是OP的步数。@M-M这是不正确的。运行它需要几个小时的原因是代码中有bug。问题很清楚,为什么要花这么长时间?我在下面的回答中概述了原因。这个问题应该重新打开,因为它有一个清晰的问题和一个清晰的答案。@thc请再次阅读我的评论。我一开始就说了这些循环不是有效的p.s.你在回答的第一个要点中指出的那个额外的逗号,我真的认为这只是问题中的一个输入错误,而不是实际的代码。