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
に計算すると、すべて正常に機能します。