是%>%
管道运营商不断将左手侧(LHS)到右侧(RHS)的第一个参数?即使在RHS调用中再次指定第一个参数?
假设我想指定要使用的变量cor()
:
library(magrittr)
iris %>%
cor(x=.$Sepal.Length, y=.$Sepal.Width)
Run Code Online (Sandbox Code Playgroud)
但这失败了,它看起来像是什么样的cor(., x=.$Sepal.Length, y=.$Sepal.Width)
?
我知道我可以用
iris %$%
cor(x=Sepal.Length, y=Sepal.Width)
Run Code Online (Sandbox Code Playgroud)
但想找到一个解决方案%>%
......
Kon*_*lph 15
是
%>%
管道运营商不断将左手侧(LHS)到右侧(RHS)的第一个参数?即使在RHS调用中再次指定第一个参数?
不.你自己注意到了这个例外:如果右侧使用.
,左侧的第一个参数不会被输入.你需要手动传递它.
但是,在您的情况下不会发生这种情况,因为您不是.
单独使用,而是在表达式中使用它.为了避免将左侧作为第一个参数,您还需要使用大括号:
iris %>% {cor(x = .$Sepal.Length, y = .$Sepal.Width)}
Run Code Online (Sandbox Code Playgroud)
要么:
iris %$% cor(x = Sepal.Length, y = Sepal.Width)
Run Code Online (Sandbox Code Playgroud)
- 毕竟,那是什么%$%
,而不是%>%
.
但比较一下:
iris %>% lm(Sepal.Width ~ Sepal.Length, data = .)
Run Code Online (Sandbox Code Playgroud)
在这里,我们将左侧表达式明确地作为data
参数传递给lm
.通过这样做,我们阻止它作为第一个参数传递给lm
.