我想使用
以下是
multidplyr
来加速获取回归
拟合的残差
。我创建了一个函数
,用于拟合回归
模型以获取残差
,该函数除了数据外,还需获取两个参数。以下是
函数
内容:func <- function(df,reg.mdl,mdl.fmla)
{
if(reg.mdl == "linear"){
df$resid <- lm(formula = mdl.fmla, data = df)$residuals
} else if(reg.mdl == "poisson"){
df$resid <- residuals(object = glm(formula = mdl.fmla,data = df,family = "poisson"),type='pearson')
}
return(df)
}
这里有一个数据示例,我将尝试使用 multidplyr
方法:
set.seed(1)
ds <- data.frame(group=c(rep("a",100), rep("b",100),rep("c",100)),sex=rep(sample(c("F","M"),100,replace=T),3),y=rpois(300,10))
model.formula <- as.formula("y ~ sex")
regression.model <- "poisson"
这里是 multidplyr
的方法:
ds %>% partition(group) %>% cluster_library("tidyverse") %>%
cluster_assign_value("func", func) %>%
do(results = func(df=.,reg.mdl=regression.model,mdl.fmla=model.formula)) %>% collect() %>% .$results %>% bind_rows()
然而,这会报错:
Error in checkForRemoteErrors(lapply(cl, recvResult)) :
3 nodes produced errors; first error: object 'regression.model' not found
In addition: Warning message:
group_indices_.grouped_df ignores extra arguments
我猜我从do
传递参数到func
的方式是错误的。
你有什么正确的方法吗?