【发布时间】:2016-05-10 10:24:33
【问题描述】:
例如,我见过一些人使用 [<- 作为带有波兰符号的函数
x <- matrix(1:4, nrow = 2)
`[<-`(x, 1, 2, 7)
返回
[,1] [,2]
[1,] 1 7
[2,] 2 4
我已经尝试过使用 [<- 一点,看起来像这样使用它会打印类似 x[1,2] <- 7 的结果,而无需实际执行分配。但我无法确定这个函数实际上是做什么的,因为为?"[" 提供的文档只是顺便提及它,我无法在谷歌或 SO 中搜索“[
是的,我知道实际上使用这可能是一个可怕的想法,我只是为了更好地理解R而感到好奇。
【问题讨论】:
-
这更像是 R 将
x[1,2] <- 7转换为x <- '[<-'(x, 1, 2, 7)。 -
如果你了解
[函数和<-函数,那么[<-函数就很有意义了。试试[(x,1,2)。试试<-(a,1) -
我没有看到这个重复。我认为的问题是为什么
[<-实际上不会影响符号/命名对象x中的子赋值。这似乎不是提名副本中提出的问题。 -
"[<-"是一个返回相应修改对象的函数。"[<-"(x, i, value)似乎就是这样做的。要查看显式"[<-"调用和x[i] <- value的解析方式之间的区别,也许可以参见'*tmp*' = "tmp"; x = 1:3; x[2] <- 0; x; get("*tmp*")VS'*tmp*' = "tmp"; x = 1:3; "[<-"(x, 2, 0); x; get("*tmp*"),如 here 所述。
标签: r slice assignment-operator