我在 R 中有一个长时间运行的进程(通过 Rstudio-server),我怀疑它可能存在内存问题,最终导致 R 会话崩溃。不幸的是,我无法准确监控正在发生的事情:崩溃日志是否存在,如果存在,我在哪里可以找到它们?
我的设置如下:
- Rstudio-server 安装在 ubuntu 12.04 中,在 vmmare 播放器虚拟机上。
- 我在安装 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
计算,则一切正常。