2016-04-15 137 views
0

請告訴我如何將循環結果保存到表(data.frame)甚至.csv文件中。我無法自己處理這個問題。保存循環結果R

for (i in 1:10000){ 
     x<-pois(1,40) 
     sum<-round(digits = 2, sum(rlnorm(x, log(10), log(5)))) 
     } 
+2

? 'replicate(10000,round(digits = 2,sum(rlnorm(pois(1,40),log(10),log(5)))))'從哪裏得到函數'pois()'? – jogo

回答

2

如果要使用for循環,請創建一個空向量,然後遍歷每個位置。

mySums <- numeric(10000) 
for (i in 1:10000){ 
    x <- rpois(1,40) 
    mySums[i] <- round(digits = 2, sum(rlnorm(x, log(10), log(5)))) 
} 

這很簡單,然後將其轉換爲數據幀或您需要的任何其他格式。

編輯:這是假設你打算使用rpois()或類似的東西。

+0

@jogo我知道這:)這不是我的答案,是嗎?只是修復馬特打算髮布的內容。我認爲你應該將你的評論轉換爲答案。 – zx8754

+0

不是擴展矢量比替換零矢量中的元素慢。我認爲我的意思是零向量,而不是零。 –

+0

@MattTriggs由於循環已知大小,所以啓動的向量可能應該是'mySums < - numeric(10000)'或'mySums < - vector(mode =「numeric」,length = 10000)'。 'vector()'創建一個模式邏輯和長度爲0的向量,在循環的第一步中必須強制轉換爲數字,並且在每一步中增長(即複製到RAM的新部分)。 – lmo

1

假設你要調用rpois()(而不是pois()):

mySums <- replicate(10000, round(digits=2, sum(rlnorm(rpois(1,40), log(10), log(5))))) 
0

是真的,我的意思是rpois功能。我用下面的公式解決了它:

Results=matrix(0,10000,1) 

for (i in 1:10000) 
{ 
    x<-rpois(1,40) 
    Results[i,1]<-round(digits = 2, sum(rlnorm(x,log(20), log(4)))) 
} 
+0

'結果[,1] < - replicate(10000,round(digits = 2,sum(rlnorm(rpois(1,40),log(20),log(4)))))'沒有for-loop 。甚至:'結果< - 矩陣(複製(10000,round(digits = 2,sum(rlnorm(rpois(1,40),log(20),log(4))))),1)' – jogo