%>%
管道操作符是否总是将左侧(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)
但是想用%>%
找到解决方案...
2条答案
按热度按时间qcbq4gxm1#
%>%
管道操作符是否总是将左侧(LHS)的参数传递给右侧(RHS)的第一个参数?即使第一个参数在RHS调用中被再次指定?不。你自己也注意到了例外:如果右侧使用
.
,则左侧的第一个参数是 * not * feed in,需要手工传递。然而,在您的案例中,这并没有发生,因为您并没有单独使用
.
,而是在表达式中使用它,为了避免左边的参数作为第一个参数,您还需要使用大括号:或者:
%$%
的用途,而不是%>%
。但比较一下:
这里,我们将左边的表达式作为
data
参数显式传递给lm
,这样做可以防止它作为lm
的第一个参数传递。kmbjn2e32#
可以使用匿名函数