R 中的 %<-% 运算符是什么?

What is the %<-% operator in R?

我在这个博客上遇到了一个新的管道 R 运算符 %<-%tokenize_fun() 函数中的 https://blogs.rstudio.com/ai/posts/2019-09-30-bert-r/

这个运算符叫什么?它有什么作用?

我在 google 上找不到有关它的任何信息。我知道其他管道运算符,如 %>%%T>%%$%

它是来自zeallot

的多重赋值运算符

%<-% and %->% invisibly returnvalue.

These operators are used primarily for their assignment side-effect. %<-% and %->% assign into the environment in which they are evaluated.

即它从一行代码创建多个对象

> library(zeallot)
> c(x, y, z) %<-% c(1, 3, 5)
> x
[1] 1
> y
[1] 3
> z
[1] 5

如果查看链接 post 中的代码,就会清楚该运算符的作用。让我们看一下tokenize_fun中的第一行:

tokenize_fun = function(dataset) {
  c(indices, target, segments) %<-% list(list(),list(),list())

该行实质上在主列表中创建了三个空列表来保存索引、目标和段。这些稍后通过 append.

填充

编辑:下面有关于函数具体名称的回答。我会在这里留下这个答案,以防它提供一些额外的上下文。

一般来说,可以在%中定义一个infix运算符。 %` 形式。在这种情况下,作者可能想通过单行代码“模仿”类似 python 的多重赋值。