在另一个函数中传递一个函数,参数变错误

时间:2019-05-15 11:57:26

标签: r function arguments quotes

当定义参数时,我有一个可以正常工作的函数:

fav_fun<-function(dataset,levelname,demo_var){  
  demo_var<- enquo(demo_var)

  levelname<-enquo(levelname)

  test1<-dataset %>% group_by(!!levelname, !!demo_var)%>%filter(status=="Complete")%>% summarise_at(questions,per_qid) 

  test2<-melt(test1)

  test2$newvar<-do.call(paste,c(test2[c("variable","Age")],sep="_"))
  test2<-na.omit(test2)
  test2<-test2%>% select(c(-2,-3))

  total<-RawDataSplit%>% group_by(!!levelname)%>%filter(status=="Complete") %>% summarise(N=n())

  test2
}

但是我还有另一个函数,其中我定义了该函数的参数,然后该函数无法找到那些参数。 另一个功能是:

levelfun<-function(m){

  levelname<-names(mastercodes)[[m]]

  level_filter_data<-RawDataSplit%>% filter(unitlevel>m)

  if(top_level_inclusion==TRUE){
    top_data<-RawDataSplit%>% filter(unitlevel==1) 
    final_data<-rbind(top_data,level_filter_data)
  }
  if(top_level_inclusion==FALSE){
    final_data<-level_filter_data
  }

  code_match<-match(names(mastercodes),names(RawDataSplit))
  k=code_match[m]
  allemp_rep<-fav_fun(final_data,levelname,demo_var
  allemp_rep<-cbind(datalinetype=1,allemp_rep)

  if(k<ncol(final_data)-1){
    directrep_data<-subset(final_data,is.na(final_data[,(k+2)]))
    directrep<-fav_fun(directrep_data,levelname,demo_var
    directrep<-cbind(datalinetype=2,directrep)}

  if(k==ncol(final_data)-1){
    directrep_data<-subset(final_data,!is.na(final_data[,(k+1)]))
    directrep<-fav_fun(directrep_data,levelname,demo_var)
    directrep<-cbind(datalinetype=2,directrep)} 

  ifelse (nrow(directrep_data)==0, final<-allemp_rep, final<-rbind(allemp_rep,directrep))
  final<-final%>% mutate(identifier=as.factor(identifier))
  final
}

我在levelfun中传递了levelname和demo_var,我尝试使用noquote和as.names,因为引号存在问题,但是它没有将它们作为文本从数据中提取为列。

有什么想法可以在levelfun中传递这两个参数levelname和demo_var,以便它们自动作为数据集的列,并且fav_fun函数可以正常运行吗?

0 个答案:

没有答案