私はいくつかのforループ条件を使用して私のデータセットをサブセット化するいくつかのRプロット( "vegan"パッケージの出力)を生成しようとしています。 私は条件として1つしか使用しない場合、私は必要なプロットを取得しますが、forループを連鎖すると期待される条件の数は作成されません。R - 複数のforループを作成してプロットを保存する
マイデータフレームは次のようになります
my_df<- data.frame(Cruise = sample(c("cruise2016" ,"cruise2008" ,"cruise2012" ,"cruise2014" ,"cruise2011"), 50, replace=T),
Depth_interval = sample(c("100","200","500"), 50, replace = T),
data.frame(matrix(sample(1:100,300,replace=T), nrow=50)))
私はループのための条件として、二つのリストを使用します。これらのリストでは
cruise.list <- unique(my_df$Cruise)
interval.list <- unique(my_df$Depth_interval)
、私は(すべての深さ間隔をプロットしたい3各クルーズ内のユニーク(ユニーク):
for (i in seq_along(cruise.list)) {
for (i in seq_along(interval.list)) {
pdf(paste("my_path",
cruise.list[i],
interval.list[i],
".pdf", sep=""))
df <- my_df %>%
filter(
Cruise == cruise.list[i],
Depth_interval == interval.list[i])
df.nmds <- metaMDS(df, trymax = 1000, k = 3, distance = "bray")
# Plot
ordiplot(df.nmds, disp="sites", type="p", cex.lab=1.3)
title(main=paste(cruise.list[i], "\n", interval.list[i],"\n", "stress : ", round(df.nmds$stress,2),sep=""), cex.main=1.5)
dev.off()
}
}
このコードでは、15期待される。私は、forループは、Rが私が期待している条件を読まないような順序であると推測します。任意の助け
おかげで、
カテゴリーで探す
両方のループでループ変数として 'i'を使用することはできません。常に内側ループの値をとります。 'i'と' j'を使うか、 'current_cruise'と' current_interval'を使う方が良いでしょう。 – Marius
ありがとう、完璧に動作します!簡単な間違い、大きな問題! – Rhiz