1

R で (Rstudio-server 経由で) 実行時間の長いプロセスがありますが、メモリの問題があり、最終的に R セッションがクラッシュする可能性があります。残念ながら、何が起こっているのかを正確に監視することはできません.クラッシュログは存在しますか?存在する場合はどこにありますか?

私のセットアップは次のとおりです。

  • vmmare プレーヤー仮想マシン上の ubuntu 12.04 にインストールされた Rstudio-server。
  • Windows 7のインストールで、firefoxからrセッションにアクセスします。
  • プログラムを一晩実行したままにしておくと、rstudio インターフェイスに次のエラー メッセージが表示されます。

    予期しないクラッシュにより、以前の R セッションが異常終了しました。このクラッシュの結果、ワークスペース データが失われた可能性があります。

次のコードが問題を引き起こしているようです (再現可能なサンプルではありません)。このコードは、回帰式のリスト (約 250k)、1500 行 x 70 列のデータ フレームを受け取り、計算に使用するコアの数を指定することもできます。

get_models_rsquared = function(combination_formula,df,cores = 1){
  if (cores == "ALL"){cores <- detectCores()}
  require(parallel) #if parallel processing is not required, mclapply should be changed to lapply.

  #using mclapply to calculate linear models in parallel,
  #storing adjusted r-squared and number of missing rows in a list
  combination_fitted_models_rsq = mclapply(seq_along(combination_formula), function(i) 
    list(summary(lm(data = df, combination_formula[[i]]))$adj.r.squared,
         length(summary(lm(data = df, combination_formula[[i]]))$na.action)), mc.cores = cores  )

  #now store the adjusted r-squared and missing rows of data
  temp_1 = lapply(seq_along(combination_fitted_models_rsq), function(i) 
    combination_fitted_models_rsq[[i]][[1]])
  temp_1 = as.numeric(temp_1)

  temp_2 = lapply(seq_along(combination_fitted_models_rsq), function(i) 
    combination_fitted_models_rsq[[i]][[2]])
  temp_2 = as.numeric(temp_2)

  #this is the problematic line
  temp_3 =  lapply(seq_along(combination_formula), function(i) {
    length(attributes(terms.formula(combination_formula[[i]]))$term.labels)
  }#tells you number of predictors in each formula used for linear regression
   )#end lapply
  result = data.frame(temp_1,temp_2,temp_3)
  names(result) = c("rsquared","length.na","number_of_terms")
  return(result)
}

の計算はtemp_3、関数が呼び出されたときに問題を引き起こすようです。ただし、コードを関数から取り出して、関数の実行temp_3に計算すると、すべて正常に機能します。

4

0 に答える 0