爲了在我的數據中使用tidyr
和purrr
在我的數據組中運行模型,我從此R Bloggers link得到以下代碼。但是,我想在我的嵌套數據上使用glmnet
而不僅僅是lm
。不像lm
,glmnet
/cv.glmnet
需要model.matrix
作爲x
的論點,我需要抽象的公式提供給那個model.matrix
這就是讓我困擾。R - 使用glmnet with purrr/tidyr
所以此工程:
library(purrr)
library(tidyr)
library(dplyr)
library(glmnet)
mod_test <- mtcars %>%
nest(-vs) %>%
mutate(cv_mod = map(data, ~ cv.glmnet(
x = model.matrix(data = ., .$mpg ~ .$cyl * .$hp)[,-1],
y = .$mpg
)))
mod_test
> mod_test
# A tibble: 2 x 3
vs data cv_mod
<dbl> <list> <list>
1 0 <tibble [18 x 10]> <S3: cv.glmnet>
2 1 <tibble [14 x 10]> <S3: cv.glmnet>
但是當我嘗試單獨創建爲model.matrix
公式,事實並非如此。
mod_form <- as.formula(".$mpg ~ .$cyl * .$hp")
mod_test2 <- mtcars %>%
nest(-vs) %>%
mutate(cv_mod = map(data, ~ cv.glmnet(
x = model.matrix(data = ., mod_form)[,-1],
y = .$mpg
)))
Error in mutate_impl(.data, dots) : object '.' not found
什麼'mod_form < - MPG〜缸* hp'? – mt1022
@ mt1022,是的,似乎這樣做。 ''。''我有點過分了。我想這只是'y'參數需要的,因爲'model.matrix'已經獲得了'data = .'參數。隨意發佈作爲答案。 –