【发布时间】:2017-07-09 16:12:26
【问题描述】:
使用用户定义的函数,我必须加入数据框中所选列数的置信区间的下限和上限(命名为CIlow 和CIhigh)。数据框有CIlow 和CIhigh 用于多个组(命名为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))
我希望在现有组(a、b 和 c)中的选定数量的组(例如a、b)中为每个组添加一个连接列。
因此,预期的输出应该如下:
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)"))
为了构建我自己的用户定义函数,我尝试了以下代码:
f<-function(df,gr){
enquo_gr<-enquo(gr)
r<-df%>%
dplyr::mutate(UQ(paste("CI",quo_name(gr),sep="_")):=
sprintf("(%s,%s)",
paste("CIlow",UQ(enquo_gr),sep="_"),
paste("CIhigh",UQ(enquo_gr),sep="_")))%>%
dplyr::select(paste("CI",UQ(enquo_gr),sep="_"))
return(r)
}
但是当以这种方式使用上述功能时
library(dplyr)
group<-c("a","b")
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)
我收到以下错误消息:
错误:
expr必须引用符号、标量或调用
我该如何解决这个问题?
PS1:这个问题类似于a previous one。但是,这个问题更进一步,因为它需要选择要合并的列。
PS2:我将不胜感激按照这个问题的方法提出的代码建议。
【问题讨论】: