I would like to create a function to join the lower and higher bound of confidence intervals (named as CIlow
and CIhigh
) from a data frame. See the data frame below as example.
dataframe<-data.frame(CIlow_a=c(1.1,1.2),CIlow_b=c(2.1,2.2),CIlow_c=c(3.1,3.2),
CIhigh_a=c(1.3,1.4),CIhigh_b=c(2.3,2.4),CIhigh_c=c(3.3,3.4))
The data frame has CIlow
and CIhigh
for a number of groups (named as a
, b
and c
) and for a number of variables (in this case two, the rows of the data frame).
group<-c("a","b","c")
To build my own function I tried the following code:
f<-function(df,gr){
enquo_df<-enquo(df)
enquo_gr<-enquo(gr)
r<-df%>%
dplyr::mutate(UQ(paste("CI",enquo_gr,sep="_")):=
sprintf("(%s,%s)",
paste("CIlow",quo_name(enquo_gr),sep="_"),
paste("CIhigh",quo_name(enquo_gr),sep="_")))
return(r)
}
However when using the function
library(dplyr)
group<-c("a","b","c")
dataframe<-data.frame(CIlow_a=c(1.1,1.2),CIlow_b=c(2.1,2.2),CIlow_c=c(3.1,3.2),CIhigh_a=c(1.3,1.4),CIhigh_b=c(2.3,2.4),CIhigh_c=c(3.3,3.4))
f(df=dataframe,gr=group)
I do not get the expected output
output<-data.frame(CI_a=c("(1.1,1.3)","(1.2,1.4)"),
CI_b=c("(2.1,2.3)","(2.2,2.4)"),
CI_c=c("(3.1,3.3)","(3.2,3.4)"))
but the following error message:
Error: LHS must be a name or string
Do you know why? How could I solve this issue? Thanks in advance.