我有一个我写的函数,它应该过滤一些值然后产生交叉制表。它使用dplyr过滤器过滤值,选择命令。
我的问题是,当我传递列的名称或函数时,我得到一个错误,当我将名称作为字符串传递给""在它周围,它不会过滤观察结果。 这是代码:
fnDoCrosstab <- function(a) {
x <- surv_data1 %>% filter(a != "blank") %>% select(a) %>% as.matrix() %>% as.vector()
y <- surv_data1 %>% filter(a != "blank") %>% select(segment_name) %>% as.matrix() %>% as.vector()
CrossTable(x,y, format = "SPSS",prop.chisq = F)
}
fnDoCrosstab(b_thisyear)
答案 0 :(得分:2)
使用最新版本的dplyr(0.7),你可以做这样的事情
library(dplyr)
fnDoCrosstab <- function(a) {
a <- enquo(a)
x <- mtcars %>% filter((!!a) != 0) %>% select(mpg, !!a) %>% as.vector()
x
}
fnDoCrosstab(am)
fnDoCrosstab(vs)
您使用enquo()
捕获未评估的字段名称,然后根据需要使用!!