是%>%
管道运营商不断将左手侧(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)
但想找到一个解决方案%>%
...
是
%>%
管道运营商不断将左手侧(LHS)到右侧(RHS)的第一个参数?即使在RHS调用中再次指定了第一个参数?
否。您自己已经注意到了该异常:如果右侧使用.
,则不会输入左侧的第一个参数。您需要手动传递它。
但是,这种情况在您的情况下不会发生,因为您不是.
在单独使用它,而是在一个表达式内使用它。为了避免将左侧作为第一个参数,您还需要使用花括号:
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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句