【发布时间】:2022-01-11 18:34:01
【问题描述】:
这个函数出错了,当我用 var1-var3 更改 colum1-column3 时它可以工作,这很奇怪:
var1<-c(rep("A",4),rep("B",4))
var2<-c(rep("C",4),rep("D",4))
var3<-c(rep("E",2),rep("F",4),rep("G",2))
dataset<-data.frame(var1,var2,var3)
Rfun<-function(data,column1,column2,column3){
data_<-data %>%dplyr::mutate(n = 1, {{column3}} := str_c('column3_', {{column3}})) %>%
complete({{column1}}, {{column2}}, {{column3}}, fill = list(n = 0)) %>%
pivot_wider(names_from = {{column3}}, values_from = n, values_fn = sum) %>%
mutate(Total = rowSums(across(where(is.numeric)))) %>%
group_by({{column1}}) %>%
mutate(across(starts_with('column3'),
~ case_when(. == 0 ~ '0(0%)',
TRUE ~ sprintf('%d(%d%%)', ., 100 * mean(. != 0))))) %>%
ungroup
library(vcdExtra)
test<-CMHtest(table(data$column2, data$column3, data$column1),overall=TRUE)
list<-c(data_,test)
return(list)
}
Rfun(dataset,var1,var2,var3)
这是错误:
【问题讨论】:
-
这将捕获符号
var1,作为参数传递给调用Rfun(dataset, column1 = var1, ...)中的column1参数;它会将complete(column1, ...)行替换为complete(var1, ...)。