【问题标题】:R baseline package saving plots in a loopR基线包在循环中保存图
【发布时间】:2019-10-21 08:59:22
【问题描述】:

我正在尝试通过更改循环中的每个参数并比较绘图以确定哪些参数给我最好的基线来优化 R 基线包中 baseline 的参数。 我目前编写了代码,以便循环生成每个图,但是我无法将图保存为我正在创建的每个对象的类是特定于基线包的(我怀疑这是问题在这里)。

foo <- data.frame(Date=seq.Date(as.Date("1957-01-01"), by = "day", 
                        length.out = ncol(milk$spectra)),
          Visits=milk$spectra[1,],
          Old_baseline_visits=milk$spectra[1,], row.names = NULL)
foo.t <- t(foo$Visits)
#the lines above were copied from https://stackoverflow.com/questions/37346967/r-packagebaseline-application-to-sample-dataset to make a reproducible dataset

df <- expand.grid(lambda=seq(1,10,1), p=seq(0.01,0.1,0.01))
baselinediff <- list()

for(i in 1:nrow(df)){
  thislambda <- df[i,]$lambda
  thisp <- df[i,]$p
  thisplot <- baseline(foo.t, lambda=thislambda, p=thisp, maxit=20, method='als')
  print(paste0("lambda = ", thislambda))
  print(paste0("p = ", thisp))
  print(paste0("index = ", i))
  baselinediff[[i]] <- plot(thisplot)
  jpeg(file = paste(baselinediff[[i]], '.jpeg', sep = ''))
  dev.off()
}

我知道我可以使用baseline.als 提取校正后的光谱,但我只想保存带有红色基线的绘图图像,以便我可以看到基线绘制得如何。有任何baseline 用户可以提供帮助吗?

【问题讨论】:

    标签: r baseline


    【解决方案1】:

    我建议您按以下方式更改循环:

    for(i in 1:nrow(df)){
      thislambda <- df[i,]$lambda
      thisp <- df[i,]$p
      thisplot <- baseline(foo.t, lambda=thislambda, p=thisp, maxit=20, method='als')
      print(paste0("lambda = ", thislambda))
      print(paste0("p = ", thisp))
      print(paste0("index = ", i))
      baselinediff[[i]] <- thisplot
      jpeg(file = paste('baseline', i, '.jpeg', sep = ''))
      plot(baselinediff[[i]])
      dev.off()
    }
    

    请注意,这不会尝试捕获列表中已绘制的元素 (thisplot)。相反,绘图是在您调用jpeg 命令后完成的。这解决了您的导出问题。另一个问题是文件的命名。如果您在paste 内部调用baselinediff[[i]],您显然会遇到错误。所以我把它改成了一个更简单的名字。要绘制结果列表,请调用:

    lapply(baselinediff, plot)
    

    如果您决定存储 已经 绘制的元素,那么 imager 包中的 capture.plot 函数可能是一个好的开始。

    【讨论】:

    • 这正是我想要做的,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2021-02-25
    • 1970-01-01
    相关资源
    最近更新 更多