Передача функции в другую функцию, получение ошибки с аргументами - PullRequest
0 голосов
/ 15 мая 2019

У меня есть функция, которая работает, когда я определяю аргументы:

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
}

Я передаю levelname и demo_var в levelfun, я пытался использовать noquote и as.names, потому что была проблема с кавычками, но затем он не воспринимал их как столбец из данных, а воспринимал их как текст.

Есть идеи, как я могу передать эти два аргумента levelname и demo_var в levelfun, чтобы они автоматически отображались в виде столбца набора данных, а функция fav_fun работала нормально?

...