亲爱的Stackoverflow社区,
我正在运行增量(前向和后向)glm,其中数据集包含190个变量。我试图在RStudio服务器上使用glm捕获只有统计上显着的变量,并在弹出错误时停止说明"无法分配内存。"一位同事提到我使用memory.limit()
来扩展R会话中的内存,但这仅适用于Windows。我在线搜索过,大多数人建议使用R_MAX_MEM_SIZE
,但据我所知,只有在使用命令提示符运行R程序时才会使用。有没有其他人可以建议通过RStudio脚本来控制这个或类似memory.limit()
函数的东西?我运行在22个内核上,主数据文件DATOS
的大小为150MB。此外,服务器有300GB的内存,这是很多做glm。在22个核心中,我假设主数据文件被传递到每个节点,但是不应该通过添加GLM计算来占用每个节点的整个内存。我知道有一个名为Bigmemory
的软件包处理大型数据集,但我再也不相信我的大数据集。下面是我的脚本的简单示例,我正在尝试做的以及错误消息的屏幕截图。我相信主要错误发生在glm具有大量重要的预测变量/变量,它超出了Rstudio默认的内存限制。如果还有其他需要的信息,请告诉我,以便清除任何混淆。提前感谢您提供的任何见解。
GLMFUNC <- function(nombres, DATOS, FORMULA, FAMILY, NA_ACTION = na.exclude, pvalue = 0.05)
{
library(foreach) # for loop to parallelize
library(doMC) # create the number of cores to use
# set the number of cores to use
registerDoMC(22) # 22 number of CPU cores
form <- FORMULA
j = 1
repeat
{
pvalue_forloop <- foreach (i = 1:length(nombres), .combine = rbind) %dopar%
{
if (j == 1) {
form_temp <- paste(form, nombres[i], sep=" ")
} else {
form_temp <- paste(form, nombres[i], sep=" + ")
}
GLM <- glm(formula = as.formula(form_temp), na.action = NA_ACTION, # exclude NA values where they exist
data = DATOS, family = FAMILY)
temp <- as.numeric(as.character(coef(summary(GLM))[,4][length(GLM$coefficients)]))
return(c(temp,nombres[i]))
}
.... # does other stuff
}
}
以下是我正在使用的服务器上的一些信息
Sys.info()
sysname release
"Linux" "2.6.32-504.16.2.el6.x86_64"
version nodename
"#1 SMP Wed Apr 22 06:48:29 UTC 2015" "cluster01.chapman.edu"
machine login
"x86_64" "unknown"