将其他参数映射到purrr

时间:2019-01-31 05:43:13

标签: r lm purrr

我正在尝试使用purrr将以下函数映射到嵌套数据框。我试图看一下文档,但无法将方法传递附加参数的方法束之高阁。

样本数据:

library(dplyr)
library(purrr)
nested<-iris %>% 
  group_by(Species) %>% 
  nest()

要实现的功能:

lm_mod<-function(df,xname,yname){
 xname<-deparse(substitute(xname))
 yname<-deparse(substitute(yname))
 f1<-as.formula(paste(yname,"~",xname))
 do.call(lm,list(data=quote(df),f1))
  }

几次尝试之一:

map(nested$data,lm_mod(Sepal.Length,Petal.Length))

错误:

  

stats :: model.frame(公式= df,数据=〜Petal.Length,drop.unused.levels = TRUE)中的错误:     找不到对象“ Sepal.Length”

似乎我的公式被解释为数据。我怎样才能最好地实现这一目标?

1 个答案:

答案 0 :(得分:1)

此问题已解决:问题在于我的函数定义,后来我对其进行编辑以在lm调用中明确声明数据参数,也感谢@MrFlick指出了这一点:

lm_mod<-function(df,xname,yname){
 xname<-deparse(substitute(xname))
 yname<-deparse(substitute(yname))
 f1<-as.formula(paste(yname,"~",xname))
 do.call(lm,list(data=quote(df),f1))
  }

map(nested$data,lm_mod,Sepal.Length,Petal.Length)