gpt4 book ai didi

r - R中%>%函数是什么意思?

转载 作者:行者123 更新时间:2023-12-03 04:59:53 25 4
gpt4 key购买 nike

我在一些包中看到了 %>% (百分比大于百分比)函数的使用,例如 dplyr rvest 。这是什么意思?这是在 R 中编写闭包 block 的一种方法吗?

最佳答案

%...% 运算符

%>%没有内置含义,但用户(或包)可以自由定义 %whatever% 形式的运算符以他们喜欢的任何方式。例如,此函数将返回一个字符串,该字符串由其左侧参数、后跟逗号和空格以及右侧参数组成。

"%,%" <- function(x, y) paste0(x, ", ", y)

# test run

"Hello" %,% "World"
## [1] "Hello, World"

R 的基础提供 %*% (矩阵乘法),%/% (整数除法),%in% (lhs 是 rhs 的组成部分吗?),%o% (外部产品)和 %x% (克罗内克产品)。尚不清楚是否%%是否属于这一类别,但它代表模数。

expm R 包 expm 定义了矩阵幂运算符 %^% 。有关示例,请参阅 Matrix power in R .

运算符运算符R包定义了大量此类运算符,例如 %!in% (对于不是 %in% )。请参阅http://cran.r-project.org/web/packages/operators/operators.pdf

igraph 这个包定义了 %--% 、 %->% 和 %<-% 来选择边缘。

lubridate 该包定义 %m+% 和 %m-% 来添加和减去月份,并定义 %--% 来定义间隔。 igraph 还定义了 %--% 。

管道

ma​​grittr%>% 为例magrittr R 包已将其定义为 magrittr vignette 中讨论的内容。请参阅http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html

magitr 还定义了许多其他此类运算符。请参阅前面链接的“其他管道运算符”部分,其中讨论了 %T>% , %<>%%$%http://cran.r-project.org/web/packages/magrittr/magrittr.pdf了解更多详细信息。

dplyr dplyr R 包用于定义 %.%相似的运算符;但是,它已被弃用,dplyr 现在建议用户使用 %>%其中 dplyr 从 magrittr 导入并提供给 dplyr 用户。正如 David Arenburg 在评论中提到的,这个问题讨论了它与 magrittr 的 %>% 之间的差异。 : Differences between %.% (dplyr) and %>% (magrittr)

pipeR R 包 pipelineR 定义了 %>>%类似于 magrittr 的 %>% 的运算符,可以用作它的替代品。请参阅http://renkun.me/pipeR-tutorial/

pipeR 包还定义了许多其他此类运算符。请参阅:http://cran.r-project.org/web/packages/pipeR/pipeR.pdf

poSTLogic poSTLogic 包定义 %if%%unless%运算符。

wrappr R 包wrapper 定义了一个点管%.>%这是 %>% 的显式版本因为它不会隐式插入参数,而只会替换右侧点的显式使用。这可以被视为 %>% 的另一种替代方案。 。请参阅https://winvector.github.io/wrapr/articles/dot_pipe.html

奇怪的管道。这并不是真正的管道,而是一些巧妙的基本语法,以类似于管道的方式工作,而无需实际使用管道。 http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ 中对此进行了讨论。这个想法是,而不是写:

1:8 %>% sum %>% sqrt
## [1] 6

有人写了以下内容。在本例中,我们显式使用 dot 而不是省略 dot 参数,并通过对名称为 dot ( . ) 的变量赋值来结束管道的每个组件。我们在其后面加上分号。

1:8 ->.; sum(.) ->.; sqrt(.)
## [1] 6

更新 在顶部添加了有关 expm 包和简化示例的信息。添加了 poSTLogic 包。

更新 2 R 的开发版本定义了 |>管道。与 Magrittr 的 %>% 不同它只能代入右侧的第一个参数。尽管受到限制,但它通过语法转换来工作,因此不会影响性能。

关于r - R中%>%函数是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27125672/

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