R の次のセッションで使用するために MDS オブジェクトを保存するにはどうすればよいですか? metaMDS() 関数はいくつかのランダムな再起動を使用するため、毎回わずかに異なる結果が生成されます。R の複数のセッションで一貫した出力が必要です。どうすればこれを達成できますか? ありがとうございました
私が参照しているオーディネーション オブジェクトのタイプの例:
data(dune)
sol <- metaMDS(dune)
sol
@csgillespie は、metaMDS()
再現可能な結果を作成する方法を示しました。疑似乱数ジェネレーターシードのこの設定は、metaMDS()
R または他のソフトウェアで疑似乱数ジェネレーターを使用する他の関数を使用するたびに行う必要があります。そうしないと、結果を再現できなくなります。
ただし、metaMDS()
フィットによっては計算に時間がかかる場合があるため、結果オブジェクトをディスクにシリアル化することもできます。そのために、save()
またはsaveRDS()
. 2 つの違いは、前者 ( save()
) は名前を含むオブジェクト全体を保存することです。saveRDS()
現在のセッションのオブジェクトの名前ではなく、オブジェクト自体のみをシリアル化します。
load()
によって保存されたオブジェクトを復元するために使用できますsave()
。オブジェクトを現在のセッションにロードし、同じ名前のオブジェクトを上書きします。readRDS()
によってシリアル化されたオブジェクトをロードするために使用されsaveRDS()
ます。
require("vegan")
## The recommended way of running NMDS (Minchin 1987)
##
data(dune)
## Global NMDS using monoMDS
## set the seed
set.seed(1)
sol <- metaMDS(dune)
save(sol, file = "my_sol.rda")
ls()
rm(sol)
load("my_sol.rda")
ls()
saveRDS(sol, file = "my_sol.rds")
ls()
sol2 <- readRDS("my_sol.rds")
ls()
all.equal(sol, sol2)
関連する出力の一部は次のとおりです。
> save(sol, file = "my_sol.rda")
> ls()
[1] "dune" "sol"
> rm(sol)
> load("my_sol.rda")
> ls()
[1] "dune" "sol"
>
> saveRDS(sol, file = "my_sol.rds")
> ls()
[1] "dune" "sol"
> sol2 <- readRDS("my_sol.rds")
> ls()
[1] "dune" "sol" "sol2"
> all.equal(sol, sol2)
[1] TRUE
同じ乱数を使いたい場合は、乱数シードを設定する必要があります。例えば、
##For some positive number
R> set.seed(1)
R> runif(1)
[1] 0.2655
R> set.seed(1)
R> runif(1)
[1] 0.2655
あなたの例ではset.seed
、関数呼び出しの前に使用してください。