curiouser& curiouser:mutate()lreaches定义新列的函数内部,表示其参数未使用

时间:2017-11-23 21:55:16

标签: r parsing scope dplyr mutate

下面的代码用于将数据分成分位数(使用来自Frank Harrell的Hmisc的wtd.quantile,使用分位数和数据(+一点抖动)来定义一个因子(带有cut)然后分组找到分位数组之间的因子。然而,我得到了这个“缺少参数”的错误,在下面再现,而不是像我期望的那样来自wtd.quantile,而是来自mutate。这被解析错了吗?还是有些错误?完全不同的问题?

library(Hmisc)
library(dplyr)
year    <- c(10,10,20,20,30,30)
hhinc99 <- c(101,102,301,302,501,502)
wtsupp  <- c(1.1,1.2,1.3,1.5,1.7,1.11)
midy    <- tibble(year, hhinc99, wtsupp)

midy  %>% 
  group_by(year)   %>% 
  mutate(inc2 = hhinc99, 
         inc_q_groups = cut(inc2, 
                breaks = wtd.quantile(hhinc99 + .Machine$double.eps * 100 * rnorm(length(hhinc99)), 
                           weights = wtsupp, probs=c(0, 0.5, 1))))                   %>% 
         group_by(inc_q_groups)                                                    %>% 
         summarise(inc_q_means = 
                   wtd.mean(hhinc99, weights = wtsupp, na.rm=TRUE))  ->  inc_dec_means

Error in mutate_impl(.data, dots) : 
  Evaluation error: unused arguments (weights = wtsupp, probs = c(0, .5. 1)).

如果我只拿出分位数函数并附加midy,我得到:&gt;

breaks
  0%  50% 100% 
 101  302  502 

这个问题一直变得陌生。如果我只是将mutate替换为上面的dplyr :: mutate,并且不做其他更改,我会收到此错误:

Error in mutate_impl(.data, dots) :
Evaluation error: no applicable method for 'group_by_' applied to an object of class "factor".

通常我会将其视为包冲突的标志。但还有谁使用“变异”?我认为这是哈德利特别的。 getAnywhere在plyr命名空间中显示mutate的副本,我想这可能是不同的,但我没有加载plyr。

欢迎所有评论,想法,答案,建议等。

0 个答案:

没有答案