2014-04-27 97 views
1

我需要模擬n = 100的100個數據集。我想是這樣的:R中的模擬

x1 = NULL 
for (i in 1:100){ 
set.seed(i) 
x1[i] <- sample(1:4, 100, replace=TRUE) 
} 

但我不斷收到錯誤說: 在X1 [I] < - 樣品(1:4,100,取代= TRUE): 數量的項目替換的是不是一個替換長度的倍數

我很難過。任何幫助,將不勝感激。謝謝!

+0

聲明爲列表並繼續追加。 'x1 < - list()'。並在循環'x1 [[i]] < - sample(1:4,100,replace = TRUE)''循環內。使用'x [[i]]'檢索它' – sriramn

回答

1

您也可以使用這樣的「複製」功能:

x1 <- replicate(100, sample(1:4,100,replace=T)) 
split(x1, col(x1)) 

如果你有興趣,有一個很好的電子書稱爲「R基本原理&圖形」適用於R的初學者。

+0

感謝您的提示! – user3578536

+0

而不是'分裂'之後,也可以使用'replicate'中的「簡化= FALSE」。 –

+0

或者你可以讓它簡化並按行/列索引。 – Dason

0

所有你需要做的是改變x1[i]x1[[i]]

保羅

+0

謝謝!它的工作......我對R – user3578536

+0

比較陌生這會讓代碼工作,但這不是最好的方法。您也沒有解釋爲什麼這會解決問題或爲什麼最初的嘗試不起作用。 – Dason

+0

嗯,我不是那個回答這個問題的人,我是R的新手,但通過查看它,它將100個數據集保存爲不同的列表,因此它們需要[[]]而不是[[]]這就是代碼工作的原因。最初的嘗試沒有奏效,因爲我用[i]而不是[[i]]索引,這將適用於R中的列表。 – user3578536