我试图用多个for循环条件生成几个R图(“素食”包的输出)以将我的数据集子集化。 如果我只使用一个条件,我将检索我想要的图,但是如果我链接for循环,则不会创建预期条件数。R - 用于生成并保存图的多个循环
我的数据帧是类似于:
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 (5个唯一身份证)
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()
}
}
有了这段代码,我只得到3个地块而不是15个地块预期。我猜想for循环是按照R不会像我期望的那样读取条件的顺序。
感谢您的帮助,
最好成绩
您不能在两个循环中都使用'i'作为循环变量,它将始终采用内循环的值。使用'i'和'j',或者甚至更好:'current_cruise'和'current_interval'。 – Marius
谢谢,完美的作品!简单的错误,大问题! – Rhiz