Emp*_*cer 8 r slice assignment-operator
例如,我见过几个人使用[<-波兰表示法作为函数
x <- matrix(1:4, nrow = 2)
`[<-`(x, 1, 2, 7)
Run Code Online (Sandbox Code Playgroud)
返回
[,1] [,2]
[1,] 1 7
[2,] 2 4
Run Code Online (Sandbox Code Playgroud)
我试过玩[<-一点,看起来像这样使用它打印出的结果就像x[1,2] <- 7没有实际执行任务.但是我无法确定这个功能实际上是做什么的,因为给出的文档?"["仅提及它的传递,我不能搜索谷歌或SO"[< - ".
是的,我知道实际使用它可能是一个可怕的想法,我只是为了更好地理解R而感到好奇.
为了让作业坚持下来,你需要这样做:
`<-`( `[`( x, 1, 2), 7) # or x <- `[<-`( x, 1, 2, 7)
x
[,1] [,2]
[1,] 1 7
[2,] 2 4
Run Code Online (Sandbox Code Playgroud)
本质上发生的事情是[创建一个指向 row-col 位置的指针x,然后<-(这实际上是也可以在中缀表示法中使用的同义词assign)正在执行实际的“永久”分配。不要误以为这是一个引用调用作业。我有理由确信仍然会x产生暂时的价值。
您的版本确实进行了子分配(从它返回的内容可以看出),但该分配仅在调用的本地环境中,[<-不包含全局环境。