如何(以及何时)在 r 中使用 set.seed
R 中的set.seed()函数用于在编写涉及创建采用随机值的变量的代码时创建可重复的结果。
通过使用set.seed()函数,您可以确保每次运行代码时都会生成相同的随机值。
该函数使用以下基本语法:
设置.seed(种子)
金子:
- 种子:任何你想要的数字。
以下示例展示了如何在实践中使用此功能。
示例1:不使用set.seed()生成随机值
假设我们使用rnorm()函数创建一个包含三个变量的数据框,这些变量采用遵循标准正态分布的随机值:
#create data frame
df <- data. frame (var1 = rnorm(10),
var2 = rnorm(10),
var3 = rnorm(10))
#view data frame
df
var1 var2 var3
1 0.13076685 -0.32183484 0.08083558
2 0.93926332 0.92271464 1.14695121
3 1.97227368 0.01140237 0.29325751
4 1.99656555 0.26735086 1.17131155
5 -1.07893403 -0.12748185 -0.75510058
6 -0.58955485 -0.29720114 0.57928670
7 1.39367811 -1.43043111 -0.39395086
8 -0.09977302 -1.93133994 -0.66654713
9 -0.71876371 2.27999183 0.45990405
10 0.90421007 2.28077581 0.57545709
如果我们尝试使用rnorm()再次创建相同的数据框,则不能保证值将相同,因为我们没有使用set.seed()函数:
#create data frame
df <- data. frame (var1 = rnorm(10),
var2 = rnorm(10),
var3 = rnorm(10))
#view data frame
df
var1 var2 var3
1 0.1841698 1.18134622 -0.9410759
2 -1.3535924 -0.73136515 -0.2802438
3 1.0323083 0.06530416 -1.3447057
4 -0.6540649 -0.45005680 1.1222456
5 0.5201189 -0.03688566 -0.6317776
6 0.6119033 -0.13083390 0.7034120
7 -0.1781823 0.56807218 0.2138826
8 -0.1325103 1.10700318 -0.6799447
9 -0.6185180 0.12327017 -0.2411492
10 -0.2699959 -0.04093012 0.5289240
请注意,数据框中每一列的值完全不同。
示例2:使用set.seed()生成随机值
以下代码演示了如何在使用rnorm()函数之前使用set.seed()函数创建包含三个采用随机值的变量的数据框:
#make this example reproducible
set. seeds (7)
#create data frame
df <- data. frame (var1 = rnorm(10),
var2 = rnorm(10),
var3 = rnorm(10))
#view data frame
df
var1 var2 var3
1 2.2872472 0.356986230 0.8397504
2 -1.1967717 2.716751783 0.7053418
3 -0.6942925 2.281451926 1.3059647
4 -0.4122930 0.324020540 -1.3879962
5 -0.9706733 1.896067067 1.2729169
6 -0.9472799 0.467680511 0.1841928
7 0.7481393 -0.893800723 0.7522799
8 -0.1169552 -0.307328300 0.5917451
9 0.1526576 -0.004822422 -0.9830526
10 2.1899781 0.988164149 -0.2760640
如果我们使用与之前相同的种子值的set.seed()并再次创建数据框,则保证与之前的数据框具有相同的值:
#make this example reproducible
set. seeds (7)
#create data frame
df2 <- data. frame (var1 = rnorm(10),
var2 = rnorm(10),
var3 = rnorm(10))
#view data frame
df2
var1 var2 var3
1 2.2872472 0.356986230 0.8397504
2 -1.1967717 2.716751783 0.7053418
3 -0.6942925 2.281451926 1.3059647
4 -0.4122930 0.324020540 -1.3879962
5 -0.9706733 1.896067067 1.2729169
6 -0.9472799 0.467680511 0.1841928
7 0.7481393 -0.893800723 0.7522799
8 -0.1169552 -0.307328300 0.5917451
9 0.1526576 -0.004822422 -0.9830526
10 2.1899781 0.988164149 -0.2760640
请注意,此数据帧中的值与前一个数据帧中的值匹配。
注意:在本例中,我们选择使用7作为起始值,但您可以选择任何您想要的数字,例如 0、54、99、100、48787 等。
其他资源
以下教程解释了如何使用 R 中的其他常用函数: