У меня есть функция, которая работает, когда я определяю аргументы:
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 работала нормально?