在函数中返回多个对象 - 一个整洁的Chisq.Test Tibble和Ggplot

时间:2017-02-26 07:01:33

标签: r tidyverse

library(ggmosaic)
library(dplyr)
library(purrr)
library(tidyr)
library(broom)
library(tibble)

使用下面的代码,我希望函数输出整齐的tibble和ggplot。我不确定如何在函数中使用“return”来返回多个东西。

我尝试过这样的事情......

Chifun<-function(var){ 
df<-happy%>%select(-id,-year,-age,-wtssall)%>% 
map(~chisq.test(.x,happy[,var]))%>% 
tibble(names=names(.),data=.)%>%
mutate(stats=map(data,tidy))%>%unnest(stats)
GG<-ggplot(df)+ geom_col(aes_string(x="names",y="p.value"))
return(df,GG)}

......以及......

Chifun<-function(var){
df<-happy%>%select(-id,-year,-age,-wtssall)%>% map(~chisq.test(.x,happy[,var]))
%>%tibble(names=names(.),data=.)%>%
mutate(stats=map(data,tidy))%>%unnest(stats)
return(df)
GG<-function(var){ggplot(df)+
geom_col(aes_string(x="names",y="p.value"))
return(GG)
}
}    

我尝试过其他一些变化,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

如果要返回多个项目,请使用列表:

Chifun<-function(var){ 
df<-happy %>% select(-id,-year,-age,-wtssall) %>% 
map(~chisq.test(.x,happy[,var])) %>% 
tibble(names=names(.),data=.) %>%
mutate(stats=map(data,tidy))%>%unnest(stats)

GG<-ggplot(df)+ geom_col(aes_string(x="names",y="p.value"))

return( list(dfrm = df,plotGG = GG) ) }