gpt4 book ai didi

r - 在不输入第一个参数的情况下使用管道

转载 作者:行者123 更新时间:2023-12-04 00:54:07 26 4
gpt4 key购买 nike

%>%管道运算符总是将左侧(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)

但想通过 %>% 找到解决方案...

最佳答案

Is the %>% pipe operator always feeding the left-hand side (LHS) to the first argument of the right-hand side (RHS)? Even if the first argument is specified again in the RHS call?



不,您自己已经注意到了异常:如果右侧使用 . ,左边的第一个参数没有送入,需要手动传。

但是,在您的情况下不会发生这种情况,因为您没有使用 .就其本身而言,您在表达式中使用它。为避免将左侧作为第一个参数提供,您还需要使用大括号:
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。 .

关于r - 在不输入第一个参数的情况下使用管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38717657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com