Jak (i kiedy) używać set.seed w r


Funkcja set.seed() w R służy do tworzenia powtarzalnych wyników podczas pisania kodu, który polega na tworzeniu zmiennych przyjmujących losowe wartości.

Używając funkcji set.seed() masz pewność, że przy każdym uruchomieniu kodu generowane są te same losowe wartości.

Ta funkcja wykorzystuje następującą podstawową składnię:

set.seed(nasiono)

Złoto:

  • ziarno : dowolna liczba.

Poniższe przykłady pokazują, jak w praktyce wykorzystać tę funkcję.

Przykład 1: Wygeneruj losowe wartości bez użycia set.seed()

Załóżmy, że używamy funkcji rnorm() do utworzenia ramki danych z trzema zmiennymi, które przyjmują losowe wartości zgodne ze standardowym rozkładem normalnym:

 #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

Jeśli spróbujemy ponownie utworzyć tę samą ramkę danych za pomocą rnorm() , nie ma gwarancji, że wartości będą takie same, ponieważ nie korzystaliśmy z funkcji 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

Należy pamiętać, że wartości dla każdej kolumny w ramce danych są zupełnie inne.

Przykład 2: Wygeneruj losowe wartości za pomocą set.seed()

Poniższy kod ilustruje sposób użycia funkcji set.seed() przed użyciem funkcji rnorm() w celu utworzenia ramki danych zawierającej trzy zmienne, które przyjmują wartości losowe:

 #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

Jeśli użyjemy set.seed() z tą samą wartością początkową co poprzednio i ponownie utworzymy ramkę danych, mamy gwarancję, że będzie ona miała te same wartości, co poprzednia ramka danych:

 #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

Należy pamiętać, że wartości w tej ramce danych odpowiadają wartościom w poprzedniej ramce danych.

Uwaga : w tym przykładzie zdecydowaliśmy się użyć 7 jako wartości początkowej, ale możesz wybrać dowolną liczbę, na przykład 0, 54, 99, 100, 48787 itd.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak korzystać z innych typowych funkcji w R:

Jak korzystać z funkcji dim() w R
Jak korzystać z funkcji table() w R
Jak korzystać z funkcji znak() w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *