首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用purrr迭代公式

用purrr迭代公式
EN

Stack Overflow用户
提问于 2018-01-25 19:15:27
回答 1查看 535关注 0票数 0

我有很多公式,作为字符串,我想在glm中一次使用一个公式,最好使用tidyverse函数。这就是我现在的处境。

代码语言:javascript
复制
library(tidyverse)
library(broom)

mtcars %>% dplyr::select(mpg:qsec) %>% colnames -> targcols
paste('vs ~ ', targcols) -> formulas
formulas

#> 'vs ~  mpg' 'vs ~  cyl' 'vs ~  disp' 'vs ~  hp' 'vs ~  drat' 'vs ~  wt' 'vs ~  qsec' 

我可以用这些公式中的任何一个来运行一个一般的线性模型

代码语言:javascript
复制
glm(as.formula(formulas[1]), family = 'binomial', data = mtcars) %>% glance

#>  null.deviance,  df.null,    logLik, AIC,    BIC,    deviance,   df.residual
#> 43.86011,    31,     -12.76667,  29.53334,   32.46481,   25.53334,   30 

我想用列表中所有可能的公式来运行glm。我试过这样做的。

代码语言:javascript
复制
data.frame(formulas = formulas) %>%
    mutate(mod = map(formulas, function(fs){
        glm(as.formula(fs), family = 'binomial', data = mtcars)
    }))

但是,我得到以下错误消息:

Mutate_impl中的错误(.data,dots):评估错误:无效公式。追溯: 1. data.frame(公式=公式) %>%变异(mod=map(公式),。函数(Fs){.glm(as.formula(fs),系列=“二项式”,data =mtcar)。3. withVisible(eval(quote(\_fseq(\_lhs)),(\_fseq(\_lhs),env,env) 4. env(\_fseq(\_lhs)),env,env) 5. \_fseq(\_lhs) 6.免费(值,\_function\_list) 7. withVisible(function_list[k]) 8. function_list[k] 9.变异(.,mod =map(公式,函数(Fs)){.glm(as.formula(fs),系列=“二项式”,data =mtcar)。) mutate.data.frame(.,mod =map(公式,函数(Fs){。glm(as.formula(fs),系列=“二项式”,data =mtcar)。)as.data.frame(变异(tbl_df(.data),.) 12.变异(tbl_df(.data),.) 13. mutate.tbl_df(tbl_df(.data),.) 14. mutate_impl(.data,dots)

有人能告诉我我在这里错过了什么吗?谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 19:17:53

问题在于您使用的是data.frame();我不能百分之百确定为什么这不工作,但我认为这是因为数据帧不能顺利地处理列表列。

data.frame改为tibble对我有用。(它来自tibble包,也是通过dplyr导出的,因此应该可以在library("tidyverse")之后使用)

您可以将代码缩短一点:

代码语言:javascript
复制
tibble(formulas) %>%
    mutate(mod = map(formulas, 
                      ~  glm(as.formula(.),
                             family = 'binomial', data = mtcars)))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48450308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档