我正在尝试使用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”
似乎我的公式被解释为数据。我怎样才能最好地实现这一目标?
答案 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)