我想在purrr包的map函数中使用省略参数。这是一个玩具示例:
f1<-function(x,a=NA,b=NA,prs=seq(0, 1, 0.25),SW=T){
if(SW){
res<-data.frame(name1=a,name2=b,t(quantile(x, prs, na.rm = T)), mean=mean(x, na.rm = T), sd=sd(x, na.rm = T),
NAs=length(x[is.na(x)]),n=length(x[!is.na(x)]),SWp=shapiro.test(x)$p.value,stringsAsFactors =F)
}else
{
res<-data.frame(name1=a,name2=b,t(quantile(x, prs, na.rm = T)), mean=mean(x, na.rm = T), sd=sd(x, na.rm = T),
NAs=length(x[is.na(x)]),n=length(x[!is.na(x)]),stringsAsFactors =F)
}
return(res)
}
f1(c(NA,rnorm(25),NA),SW=F)
f1(c(NA,rnorm(25),NA))
现在我想在另一个函数f2中使用f1:
f2<-function(df,...){
res<-map_df(colnames(df),~f1(df[,.],a=.,...))
return(res)
}
这里的...主要用于操作f1函数中的SW和a或b参数。然而,可以从这里看到,f2并没有做我想要的事情。
f2(iris[,-5])
f2(iris[,-5],SW=F)
我很感谢任何有关如何在地图中适当使用...的指导
~
,而是实际拼写出function(.x, ...)
并且在你的函数序列中到处替换.
为.x
。 - dmi3knofunction(.x, ...)
结构!请查看我的帖子,谢谢! - Matifou