2017-12-27 188 views
1

這可能是一個非常基本的問題,但是如何讓變量在R中的值變化如下?你如何讓一個變量改變它在R中的值? (`sample`命令)

var <- sample(c(-2, -1, 0, 1, 2), size = 1)一直給予相同的數字。我能做些什麼來防止這種情況發生?

+0

您正在使用您的命令從5個元素的向量中抽取僞隨機1個元素。 然後,如果您複製隨機樣本,則將其存儲到名爲'var'的對象中,您可能會得到另一個值,但只有在存儲到另一個對象時才能使用它。 無論如何,你的問題有點混亂。我不明白哪個是你的目標 –

+2

你的命令適用於我,併爲多個'var'分配產生不同的數字。也許你已經將每個調用的'seed'修復爲相同的值? –

回答

2

如果你這樣做,set.seed(NULL)並重新運行你的代碼,你會收到一個不同的值每次。但是,如果您執行的操作類似set.seed(1729)set.seed(42)等,您將再次得到相同的號碼。

在我的系統,運行set.seed(NULL)結果如下:

> set.seed(NULL) 
> var <- sample(c(-2, -1, 0, 1, 2), size = 1) 
> var 
[1] -2 
> var <- sample(c(-2, -1, 0, 1, 2), size = 1) 
> var 
[1] 1 

如果我嘗試set.seed(1729)並重新運行代碼,我將得到:

> set.seed(1729) 
> var <- sample(c(-2, -1, 0, 1, 2), size = 1) 
> var 
[1] 0 
> var <- sample(c(-2, -1, 0, 1, 2), size = 1) 
> var 
[1] 0 

這是我們選擇的種子數是起始點用於產生一系列隨機數,這就是爲什麼我們在給定相同種子數的情況下獲得相同結果的原因。從文檔

?set.seed

最初,沒有種子;從當前的 時間創建一個新的時間,並在需要時創建進程ID。因此,默認情況下,不同會話 將給出不同的模擬結果。但是,如果先前保存的 工作空間已恢復,則種子 可能會從先前的會話中恢復。