Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用R';使用glmnet的lasso回归的未来软件包_R_Future_Purrr_Glmnet - Fatal编程技术网

无法使用R';使用glmnet的lasso回归的未来软件包

无法使用R';使用glmnet的lasso回归的未来软件包,r,future,purrr,glmnet,R,Future,Purrr,Glmnet,我最近发现了R的future软件包,并且已经成功地使用了它。 然而,我无法将此软件包与套索回归预测一起使用 在下面的玩具示例中,我首先创建一些玩具数据,然后拟合套索回归,最后预测新数据。 我执行此过程两次:一次不使用future包,然后使用future包: library(tidyverse) library(glmnet) set.seed(1) a <- tibble(id = rep(letters[1:2], each = 100), x1 = rnorm(200), x2 =

我最近发现了R的
future
软件包,并且已经成功地使用了它。 然而,我无法将此软件包与套索回归预测一起使用

在下面的玩具示例中,我首先创建一些玩具数据,然后拟合套索回归,最后预测新数据。 我执行此过程两次:一次不使用
future
包,然后使用
future
包:

library(tidyverse)
library(glmnet)

set.seed(1)
a <- tibble(id = rep(letters[1:2], each = 100), x1 = rnorm(200), x2 = rnorm(200),
            y = 1 + 2*x2 + rnorm(200))

newdata <- as.matrix(data.frame(x1 = rnorm(200), x2 = rnorm(200)))

pred_func <- function(z) predict(z, newx = newdata)[,1]

b1 <- a %>% 
  group_by(id) %>% 
  nest(.key = data) %>% 
  mutate(lasso = map(data, function(z){glmnet(x = as.matrix(select(z, x1, x2)), y = z$y,  
                                                 intercept = T, alpha = 1)})) %>% 
  mutate(myprediction = map(lasso, pred_func))

glmnet
包中有一个
predict.glmnet()

只需定义一个新函数

pred_func2 <- function(z) predict.glmnet(z, newx = newdata)[,1]
pred_func2%
嵌套(.key=data)%>%
变异(套索=地图)(数据,
函数(z){
glmnet(x=as.matrix(选择(z,x1,x2)),y=z$y,
截距=真,α=1)
})) %>% 
突变(myprediction\u future=map(套索,~future(pred\u func2(.x)))%>%
突变(myprediction=值(myprediction\u future))
屈服

>b2
#一个tibble:2x5
id数据套索myprediction\u未来myprediction
1A
2 b

请在控制台中键入
Sys.setenv(“Language”=“EN”)
,然后重新运行代码,然后将英文错误消息粘贴到您的问题中。请参阅“缺少软件包”下的“@Roland”。感谢您指出这一点:)请注意,有了一些使用R进行并行计算的经验,问题的根源是显而易见的。我花了更长的时间来研究(与我不相似的)未来方案,而不是找出问题所在。我在并行软件包中也看到过类似的错误。
pred_func2 <- function(z) predict.glmnet(z, newx = newdata)[,1]
plan(multiprocess)
b2 <- a %>% 
  group_by(id) %>% 
  nest(.key=data) %>% 
  mutate(lasso=map(data, 
                     function(z) {
                       glmnet(x=as.matrix(select(z, x1, x2)), y=z$y,  
                              intercept=TRUE, alpha=1)
                       })) %>% 
  mutate(myprediction_future=map(lasso, ~future(pred_func2(.x)))) %>% 
  mutate(myprediction=values(myprediction_future))
> b2
# A tibble: 2 x 5
  id    data               lasso       myprediction_future      myprediction
  <chr> <list>             <list>      <list>                   <list>      
1 a     <tibble [100 x 3]> <S3: elnet> <S3: MultisessionFuture> <dbl [200]> 
2 b     <tibble [100 x 3]> <S3: elnet> <S3: MultisessionFuture> <dbl [200]>