根据某些条件,我必须在使用dplyr :: n和任意函数之间做出选择(例如,一个函数返回2给出的任何参数)。
如果我执行以下操作:
new_n <- dplyr::n
new_n <- ifelse(is.null(k), new_n, my_new_n)
data <- data %>% group_by_(z) %>% mutate_(n = new_n)
例如,如果将dplyr :: n分配给new_n,我会收到错误
Error: This function should not be called directly
虽然我期待它正常工作,就像我写的那样
data <- data %>% group_by_(z) %>% mutate_(n = n())
为什么会这样?有工作吗?基本上我需要根据k为数据中的变量n分配不同的值,但由于项目要求,我无法更改执行mutate的代码部分。
编辑:添加简单的例子。 例如,如果您尝试运行
if (require("nycflights13")) {
carriers <- group_by(flights, carrier)
summarise(carriers, n())
mutate(carriers, n = n())
filter(carriers, n() < 100)
}
一切正常,但是如果你试图运行
new_n <- n
summarise(carriers, new_n())
代码不起作用,即使我所做的只是将n分配给new_n,你也会得到上面的错误。
答案 0 :(得分:3)
使用data
,您使用mutate()
但n()
使用mutate_()
所以要么使用
~n()
或
data %>% group_by(z) %>% mutate(n = n())