管道后跟。$ var into函数,为什么这不起作用?

时间:2016-06-18 08:47:09

标签: r dplyr magrittr

有人可以告诉我为什么示例1不起作用但示例2有效吗? (我将数据集管道为均值函数,但只想要一个变量, 但如果我先做选择并输出结果就没有问题了)

iris %>% mean(.$Sepal.Length)
  

NA
     警告信息:
     在mean.default(。,。$ Sepal.Length)中:
     参数不是数字或逻辑:返回NA

iris %>% .$Sepal.Length %>% mean()

 5.843333

1 个答案:

答案 0 :(得分:3)

如果您取消代码

iris %>% mean(.$Sepal.Length)

变为

mean(iris, iris$Sepal.Length)

基本上,您尝试将mean应用于data.frame,并且没有办法执行此操作。

未成功的

iris %>% .$Sepal.Length %>% mean()

mean(iris$Sepal.Length)

是一种mean数字向量的方法。

请记住,在管道中,管道左侧的整个对象将传递到右侧的第一个参数(除非另有arg = .表示)。试图只传递部分对象往往不能很好地工作。