%>%
管道操作员是否总是将左侧(LHS)送到右侧的第一个参数(RHS)?即使在RHS调用中再次指定了第一个参数?
我想说明要在cor()
中使用哪个变量:
library(magrittr)
iris %>%
cor(x=.$Sepal.Length, y=.$Sepal.Width)
但是这失败了,它看起来像cor(., x=.$Sepal.Length, y=.$Sepal.Width)
之类的东西?
我知道我可以改用
iris %$%
cor(x=Sepal.Length, y=Sepal.Width)
但想找到%>%
...
答案 0 :(得分:14)
%>%
管道操作员是否总是将左侧(LHS)送到右侧的第一个参数(RHS)?即使在RHS调用中再次指定第一个参数?
没有。您自己已经注意到了异常:如果右侧使用.
,左侧的第一个参数是而不是已经输入。您需要手动传递它。 / p>
但是,在您的情况下,不正在发生,因为您没有单独使用.
,而是在表达式中使用它。为了避免将左侧作为第一个参数,您还需要使用大括号:
iris %>% {cor(x = .$Sepal.Length, y = .$Sepal.Width)}
或者:
iris %$% cor(x = Sepal.Length, y = Sepal.Width)
- 毕竟,这是%$%
所针对的,而不是%>%
。
但比较一下:
iris %>% lm(Sepal.Width ~ Sepal.Length, data = .)
在这里,我们将左侧表达式明确地作为data
参数传递给lm
。通过这样做,我们阻止它作为第一个参数传递给lm
。