我创建了这个函数:
library(tibble); library(dplyr); library(magrittr)
ddes <- function(variable) {
n = length(variable)
median = median(variable)
mean = mean(variable)
sd = sd(variable)
se = round(sqrt(var(variable) / length(variable)), 2)
lower.95 = mean(variable) - (abs(qt(0.025, df = n - 1)) * se)
upper.95 = mean(variable) + (abs(qt(0.025, df = n - 1)) * se)
tibble(n, median, mean, sd, se, lower.95, upper.95)
}
它自己工作得很好:
ddes(mtcars$mpg)
# # A tibble: 1 × 7
# n median mean sd se lower.95 upper.95
# <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 32 19.2 20.1 6.03 1.07 17.9 22.3
但是当用在管道中时它就失效了。我怎么能用在管道中呢?
mtcars %>% ddes(mpg)
# Error in ddes(., mpg) : unused argument (mpg)
3条答案
按热度按时间vktxenjb1#
在
%>%
之后调用的函数应该在第一个位置有一个data
参数(或另一个名称),这就是为什么你会在错误消息中看到ddes(., mpg)
。你可以这样重写你的函数:请参阅Programming with
dplyr
小插图中的更多详细信息。ecbunoof2#
应该是的
因为管道操作符将整个变量替换为
ddes
函数的第一个参数。fae0ux8s3#
使用curly curly的替代方法: