如何在R中写出多个文件?

问题描述 投票:0回答:1

我是一个新手R用户。现在,我有一个问题与写出多个不同名称的文件有关。假设我的数据有以下结构。

IV_HAR_m1<-matrix(rnorm(1:100), ncol=30, nrow = 2000)
DV_HAR_m1<-matrix(rnorm(1:100), ncol=10, nrow = 2000)

我试图估计多个LASSO回归。在开始的时候,我是把迭代的数据存储在一个叫做 Dinamic_beta. 这个对象只存储在一个文件中,而且每次我的代码迭代时,它都会保存所需的信息。

为了做到这一点,我使用了 stew 属于 pomp 包,但整个过程需要5、6天,我担心停电或电脑故障。

现在,我想把每个环境(迭代)保存在一个.Rnd文件中。我不知道如何才能做到这一点,但我正在使用的代码如下。

library(glmnet)
library(Matrix)
library(pomp)


  space <-  7 #THE NUMBER OF FILES THAT I would WANT TO CREATE

  Dinamic_betas<-array(NA, c(10, 31, (nrow(IV_HAR_m1)-space)))
  dimnames(Dinamic_betas) <- list(NULL, NULL)

  set.seed(12345)  
  stew( #stew save the enviroment in a .Rnd file
file = "Dinamic_LASSO_RD",{ # The name required by stew for creating one file with all information
  for (i in 1:dim(Dinamic_betas)[3]) {
    tryCatch( #print messsages
      expr = {
        cv_dinamic <- cv.glmnet(IV_HAR_m1[i:(space+i-1),],
                                DV_HAR_m1[i:(space+i-1),], alpha = 1, family = "mgaussian", thresh=1e-08, maxit=10^9)
        LASSO_estimation_dinamic<- glmnet(IV_HAR_m1[i:(space+i-1),], DV_HAR_m1[i:(space+i-1),],
                                          alpha = 1, lambda = cv_dinamic$lambda.min, family = "mgaussian")
        coefs <- as.matrix(do.call(cbind, coef(LASSO_estimation_dinamic)))
        Dinamic_betas[,,i] <- t(coefs)
      },
      error = function(e){
        message("Caught an error!")
        print(e)
      },
      warning = function(w){
        message("Caught an warning!")
        print(w)
      },
      finally = {
        message("All done, quitting.")
      }
    )
    if (i%%400==0) {print(i)}
  }
}
  )

如果有人能建议另一个包,存储输出 在不同的文件,我会感激。

r loops file filenames multiple
1个回答
0
投票

试着在你的循环结束前加入这个内容。

save.image(paste0("Results_iteration_",i,".RData"))

这应该会在每次迭代时将整个工作空间保存到磁盘上。然后你可以使用 load() 来加载每个环境的工作空间。请告诉我这是否可行。

© www.soinside.com 2019 - 2024. All rights reserved.