簡體   English   中英

如何將循環中的圖保存到 R 中的不同 pdf(對於 lmer 圖)?

[英]How to save plots in a loop to different pdfs in R (for lmer plots)?

在循環的每次迭代中,我想將我的繪圖保存到 pdf 中。我找到了一些很好的代碼示例(例如此處),但出於某種原因,它在我的情況下不起作用。 我做錯了什么?

我做了以下事情:

save_as = "xxxx.pdf"

# dataframe 
Var1 <- c(1.0, 1.4, 2.0, 0.7, 0.8, 1.3, 1.6, 0.9, 0.5)
Var2 <- c(100, 99, 320, 219, 280, 299, 210, 200, 190)
Var3 <- c(10, 1, 4, 8, 19, 20, 7, 8, 2)
indep1 <- c(10, 11, 14, 25, 23, 21, 33, 11, 14)
indep2 <- c("species1", "species1", "species2", "species3", "species1", "species3", "species2", "species2", "species2")

df <- data.frame(Var1, Var2, Var3, indep1, indep2)

# dependent variables
dep_vars = c("Var1", "Var2", "Var3")

for (i in dep_vars){  
  ## model specification
  model1 = lmer(eval(parse(text=paste("df$", i, sep = ""))) ~ df$indep1 + (1|df$indep2))
  model2 = lmer(eval(parse(text=paste("df$", i, sep = ""))) ~ (1|df$indep2))

  # open pdf
  new_save_as = gsub('xxxx', i, save_as)
  pdf(new_save_as)

  # put plots in 
  par(mfrow = c(1,2))

  plot(model1, type=c("p", "smooth"), col.line=1)
  plot(model2, type=c("p", "smooth"), col.line=1)
  
  # close file
  dev.off()
}

如果我在沒有循環的情況下運行它,文件就會按照我的需要創建。 但是,如果我使用循環,則會創建 pdf 但保持為空。 有誰知道為什么?

另外,歡迎對我的代碼提出任何其他意見,因為我是 R 的新手。

謝謝!

如果我們想使用循環,則eval(parse不是最好的方法。而是使用[[對列進行子集化

for (i in dep_vars){  
  
  model1 = lmer(df[[i]] ~ df$indep1 + (1|df$indep2))
  model2 = lmer(df[[i]]~ df$indep1 + (1|df$indep2))

  # open pdf
  new_save_as = gsub('xxxx', i, save_as)
  pdf(new_save_as)

  # put plots in 
  par(mfrow = c(1,2))

  print(plot(model1, type=c("p", "smooth"), col.line=1))
  print(plot(model2, type=c("p", "smooth"), col.line=1))
  
  # close file
  dev.off()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM