为什么dplyr :: mutate表达式中不允许$(列表子集,美元符号)?

时间:2016-09-14 15:33:52

标签: r dplyr

以下代码段:

library(dplyr)
df = data.frame(col1=rep(1:5, c(3,3,2,1,1)))
df <- df %>%
     mutate(rle=sequence(rle(col1)$lengths)) 

失败
  

eval中的错误(expr,envir,enclos):无效的下标类型'closure'

使用dplyr 0.5.0时。这似乎是对参数dplyr::mutate的非标准评估的限制,因为

df$rle <- with(df, sequence(rle(col1)$lengths))

按预期工作(with也使用NSE,表达式也有$)产生:

col1 rle 
   1   1 
   1   2
   1   3
   2   1
   2   2
   2   3
   3   1
   3   2
   4   1
   5   1

任何人都可以解释为什么dplyr::mutate内不允许第一个构造?

我知道问题是$lengths,因为mutate(rle=sequence(rle(col1)[["lengths"]])有效。从上面看,似乎$name符号不起作用,但[["name"]]没问题。

任何人都可以解释如何在dplyr::mutate内转换表达式以产生错误吗?

0 个答案:

没有答案